Standard Durable versus Shared Durable
A standard durable serves one subscriber at a time. That subscriber receives the publisher's entire message stream.
A shared durable serves two or more subscribers. A shared durable apportions a message stream among its subscribers and ensures one of the subscribers receive and acknowledges each message.
In the following diagram, the store in Network A has standard durables which represent the interest of one subscriber object per durable. The standard durable collects the message stream from the publisher, which represents potentially many program processes. The standard durable forwards messages to the subscriber on request. The type of persistence for a standard durable depends on whether prefetch is enabled or disable, as detailed in Prefetch: Enabled Versus Disabled. Network A shows prefetch enabled, so there is no direct transport between the publisher and subscriber.
The store in Network B has a shared durable and a group of cooperating subscribers that subscriber to a single store. Subscriber11 through Subscriber20 are instances of the same program subscribing to Shared_DurableE and Subscriber 31 through 33 are instances of the same program subscribing to Shared_DurableF. The durables collect the message stream from the publisher, which represents potentially many program processes. The shared durables forward each message to only one available subscriber and ensure exactly one of those subscribers acknowledges each message. Together, the subscribers process every message in the stream. The subscriber can re-forward the message to a different subscriber, if necessary.
Figure 13: Shared Durable Distributes Messages to Cooperating Subscribers
