views:

120

answers:

2

I am trying to find a message bus provider that supports Durable Subscribers and allows me to replay, in order, based on the message timestamp, all messages for a given topic. Futhermore, I would like the message bus to reset each durable consumer's checkpoint when a message arrives late. E.g.

  1. Client subscribes to topic 1 at 2009-12-22 12:00:00
  2. Message 1 arrives, Timestamped 2009-12-22
  3. Client receives Message 1
  4. Client disconnects
  5. Message 2 arrives, Timestamped 2009-12-21 18:00:00
  6. Client connects
  7. Client receives Message 2, then Message 1

I would strongly prefer an open source provider. Does anyone know of a message bus provider that supports this? I've tried to read the intro documentation for ActiveMQ, Mass Transit, etc but I have to admit that I am behind the curve on message bus terminology, so a lot of it went over my head.

A: 

AMQP (implemented by RabbitMQ, et al) lets you define durable queues and attach them to the same exchange. Each client that wants to receive messages first sets up its own durable queue, which will hold messages received from the exchange even while the client is disconnected.

The only limitation of this is that clients that have never connected, and which arrive on the scene unexpectedly, cannot belatedly setup a queue and request a dump of all previous messages. AMQP 1.0 might allow such universal persistence, but I don't know the new model that well, so I can't say for sure.

Marcelo Cantos
A: 

you may want to look at the spring integration project.

http://www.springsource.org/spring-integration

J. Scarbrough