/// <summary> /// Start building a scheduled message to a queue with the specified date of processing. /// </summary> /// <param name="value">The <see cref="DateTime"/> the message is scheduled for processing on.</param> /// <returns> /// A fluent interface to build the queue message. /// </returns> public PublishQueueBuilder Schedule(DateTime value) { _message.Scheduled = value; _queueBuilder = new PublishQueueBuilder(Manager, _message); return _queueBuilder; }
/// <summary> /// Start building a scheduled message to a queue with the specified date of processing. /// </summary> /// <param name="value">The <see cref="DateTime"/> the message is scheduled for processing on.</param> /// <returns> /// A fluent interface to build the queue message. /// </returns> public PublishQueueBuilder Schedule(DateTime value) { _message.Scheduled = value; _queueBuilder = new PublishQueueBuilder(Manager, _message); return(_queueBuilder); }
/// <summary> /// Publish a message to a queue with the specified fluent builder as an asynchronous operation. /// </summary> /// <param name="builder">The fluent builder for creating the message to publish.</param> /// <returns> /// The <see cref="Task"/> representing the asynchronous operation. /// </returns> /// <example> /// Publish a user message to a queue. /// <code><![CDATA[ /// var message = await MessageQueue.Default.Publish(c => c /// .Queue("queue-name") /// .Name("UserMessage") /// .Description("Update User Data") /// .Data(userMessage) /// ); /// ]]></code> /// </example> /// <exception cref="System.ArgumentNullException">The builder argument is <c>null</c>.</exception> /// <exception cref="System.InvalidOperationException">Could not find queue to publish message.</exception> public Task<Message> Publish(Action<PublishQueueBuilder> builder) { if (builder == null) throw new ArgumentNullException(nameof(builder)); // start a new message with default state var message = new Message(); message.State = MessageState.Queued; var publishBuilder = new PublishQueueBuilder(_manager, message); builder(publishBuilder); var container = publishBuilder.Container; if (container == null) throw new InvalidOperationException("Could not find queue to publish message."); // enqueue on repository return container.Repository.Enqueue(message); }