Shuttle.Esb v6.0.0 and all related packages have been released.
IQueue Breaking Change
There is a breaking change on the IQueue
interface. The Enqueue
method signature has changed from:
void Enqueue(Guid messageId, Stream stream);
to
void Enqueue(TransportMessage message, Stream stream);
This was done to expose the TransportMessage envelope to the actual queue implementation. In this way the RabbitMQ and Msmq implementations now support message expiry. This change should not affect anyone other than implementors of the IQueue
interface and the change should be a simple drop-in.
Message Expiry
Not only can queues implement message expiry but Shuttle.Esb also suppports it internally. So even queuing technologies that do not have an internal message expiry mechanism benefit where the inbox message handler will ignore any message that has been expired. To expire a message simply send it as follows:
bus.Send(new Message
{
// attributes
}, c => c.WillExpire(DateTime.Now.AddSeconds(5)));