/// <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);
        }
Пример #3
0
        /// <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);
        }