Delayed Delivery¶
Publishers can specify the time when the message should be processed and delivered to subscribers. This can be done in addition to all other publishing options (basic publish, with headers. Scheduled messages can be canceled at any time using the message cancellation API.
Blocking Publish¶
DeliveryOptions deliveryOptions = new DeliveryOptions();
deliveryOptions.PublishAt = DateTime.Now.AddSeconds( 20 );
MessageStatus status = Backendless.Messaging.Publish( "This message was scheduled 20 seconds ago", deliveryOptions );
System.Console.WriteLine( $"Message scheduled. Message ID - {status.MessageId}. Message Status - {status.Status}" );
if( status.Status == PublishStatusEnum.FAILED )
System.Console.WriteLine( $"Message publish failed with error {status.ErrorMessage}" );
Non-blocking Publish¶
AsyncCallback<MessageStatus> callback = new AsyncCallback<MessageStatus>(
result =>
{
System.Console.WriteLine( $"Message scheduled. Message ID - {result.MessageId}. Message Status - {result.Status}" );
if( result.Status == PublishStatusEnum.FAILED )
System.Console.WriteLine( $"Message publish failed with error {result.ErrorMessage}" );
},
fault =>
{
System.Console.WriteLine( "Error - " + fault );
} );
DeliveryOptions deliveryOptions = new DeliveryOptions();
deliveryOptions.PublishAt = DateTime.Now.AddSeconds( 20 );
Backendless.Messaging.Publish( "This message was scheduled 20 seconds ago", deliveryOptions, callback );