Hi Paul, All,

Let me explain the problem

AMQP model has queues that users can consume. Queue model and Pub/sub etc
are done via exchanges. Basically, exchange may place message in one or
more queues, and consumers for queues may get them.

Queues can be durable - clients give a name to subscription, and messages
will be saved for him if he has disconnected.

Queues can be persistent - written to disk


​
MB nodes talk to each other via queue, MB queues are always persistant.

1. Queues matches this model well, that is done
2. For topics with durable subscriptions, we replicate both metdata and
content to for each subscription. This has to be done as different people
may consume those queues in different speeds. (Doing distributed reference
counting to decide when to delete content is too complicated yet IMO)
3. there are several ways to implement normal topics

Option 1: handle it same as durable subscription, but delete the queue when
subscription dropped. (Most simple Implementation, but if topic has 100
subscribers, 100 copies are made)

Option2: replicate metadata and content once for each node, then node
deliver messages to each subscription on that node and delete content.
(Maximum number of copies made per messages as number of nodes). This needs
us to maintain complete separate path for topics.

Option 3: When topic publish is made, push the message to all node with
subscriptions via a network connection. This will be much faster, but need
to be implemented from scratch. Something similar we need to implement for
MQTT QOS2 eventually.

Current code use option 2, but does not replicate content. So significant
amount of fixes needs to be made to keep the code.

My question is, what option should we go with for 3.0.0? I am inclined to
do option #1 as that is simplest, and add option 3 in 3.1.0.

WDYT?

--Srinath

-- 
============================
Blog: http://srinathsview.blogspot.com twitter:@srinath_perera
Site: http://people.apache.org/~hemapani/
Photos: http://www.flickr.com/photos/hemapani/
Phone: 0772360902
_______________________________________________
Architecture mailing list
[email protected]
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture

Reply via email to