How works Exactly Once delivery for Pub/Sub?

Hello

For example there is the following system landscape:

JMSServer, Sender, Receiver1, Receiver2

All clients uses the same topic.

Sender sends Message1 to Topic on JMSServer. Receiver1 connects and receives Message1. Then Receiver1 disconnects.

After that Sender sends Message2 to the same topic.

In this case Receiver1 must receive Message2 only and Receiver 2 must receive Message1 and Message2.

How does JMS Server determine that Receiver1 has received Message1 alrady?

[526 byte] By [a_svla] at [2007-10-3 3:56:27]
# 1
are you talking about durable subscribers/consumers? I'm not quite certain what you mean by the question...
cjmosea at 2007-7-14 21:54:39 > top of Java-index,Enterprise & Remote Computing,Enterprise Technologies...
# 2

You can't do this with topics - When a message is written to a topic all subscribers get a copy of the message. If your mesasge is durable it will be read by any new subscribers for the lifetime of the message.

Why do you need to the same receiver to pick up message 2?

How long between message 1 and message 2?

SteveNaivea at 2007-7-14 21:54:39 > top of Java-index,Enterprise & Remote Computing,Enterprise Technologies...
# 3

Yes I am talking about durable subscribers.

The time between message1 and message2 can be 1 day or 1 hour It doesn't matters.

All receivers must receive message1 and message2. But how do JMS Server determine that Receiver1 has received message1 already(when receiver1 connects second time)? jms server must send only message2 for recever1 when it connects second time.

a_svla at 2007-7-14 21:54:39 > top of Java-index,Enterprise & Remote Computing,Enterprise Technologies...
# 4

Now I understand.

JMS will maintain the order messages are published from each client so you will get this behaviour for free, with the caveats specified on page 66 of the JMS Spec 1.1

http://java.sun.com/products/jms/docs.html

Also if your JMS Server is clustered the message order will probably go out the window.

You may want to set your messages (or topic if your JMS provider permits it) to be non-expiring.

SteveNaivea at 2007-7-14 21:54:40 > top of Java-index,Enterprise & Remote Computing,Enterprise Technologies...