Skip to content

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 );