24 April 2016

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