Hi,

We have a single class to track all messages delivered by MB.
This becomes a bottleneck when number of queues, topics, subscribers grow.

Thus proposing to delegate lifecycle of a message to AndesMessageMetadata
object itself rather than keeping an external single class to keep all the
tracking.

Steps:

Attach life cycle to andesMessageMetadata. Extend andesMessageMetadata and
create deliverableAndesMessageMetadta
Slot reference is in andesMessage itself. What ever slot object will be
garbage collected when all deliverableAndesMessageMetadta are cleaned from
memory.

We will need to re-do some stuff AMQChannel does for us (internal Qpid). We
need to correlate message delivery and acks CHANNELWISE

1. to which channels messages were delivered.
2. How many times delivered
3. handle reject (re-queue), use *same* deliverableAndesMessageMetadta
object
4. subscriber flow control handling for each channel.
5. ack timeout handling
6. decide when to delete the message
7. decide when to route to DLC
8. SPECIAL - decide if to put message to a different relevant channel or
route to another node (involves cut from slot and modifying message id)
9. etc etc


We cannot use AMQChannel for that as we convert back and forth, not using
same deliverableAndesMessageMetadta object.

Please share the ideas on $Subject.

Thanks

-- 
*Hasitha Abeykoon*
Senior Software Engineer; WSO2, Inc.; http://wso2.com
*cell:* *+94 719363063*
*blog: **abeykoon.blogspot.com* <http://abeykoon.blogspot.com>
_______________________________________________
Architecture mailing list
[email protected]
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture

Reply via email to