/// <summary> /// Mark a message as sent. /// </summary> /// <param name="message">The <see cref="T:ServiceBus.Queueing.QueuedMessage"/> that was sent.</param> /// <param name="messageContent">The raw message content.</param> public void Dequeue(QueuedMessage message, string messageContent) { message.HasSent = true; this._ftpClient.CreatePeerDirectoryIfNotExist(message.Envelope.Recipient); this._ftpClient.DeleteMessage(new Uri(message.MessageLocation(), UriKind.Relative)); this._ftpClient.PutMessage(new Uri(message.SentLocation(), UriKind.Relative), messageContent); }
/// <summary> /// Persist an <see cref="T:ServiceBus.Messaging.IMessage"/> and raise <see cref="E:IQueueManager.MessageQueue"/>. /// </summary> /// <typeparam name="TMessage">The type of <see cref="T:ServiceBus.Messaging.IMessage"/> to queue.</typeparam> /// <param name="envelope">The message to place into the queue.</param> /// <returns> /// An awaitable object representing the enqueue operation. /// </returns> public async Task EnqueueAsync <TMessage>(Envelope <TMessage> envelope) where TMessage : class, IMessage { var queuedMessage = new QueuedMessage { QueuedAt = DateTime.Now, Envelope = envelope, HasSent = false }; var messageContent = this._messageSerialiser.Serialise(envelope); await this._ftpClient.CreatePeerDirectoryIfNotExist(envelope.Recipient); await this._ftpClient.PutMessage(new Uri(queuedMessage.MessageLocation(), UriKind.Relative), messageContent); if (this.MessageQueued != null) { await Task.Factory.StartNew(() => this.MessageQueued(queuedMessage)); } }