Hi, I'm working on a client-server application using Qpid (it is planned to use Red Hat MRG, but I believe the principle is the same) as messaging middle-ware. I'm working with following presumptions: - there is one server sending broadcasts (using topic exchanges) and processing requests (+ responding to them) using QPid - multiple client applications can connect to the broker (written by customers, so it has to be assumed, the degree of control over their quality is rather limited) - the clients can connect and subscribe some messages according to what's allowed in ACL file - the clients are using temporary/auto-delete ring type queue (ring type queues are used because the publisher/server isn't getting rejects because one of many clients is too slow)
Because of the ring type queues, there is quite high risk, that the client will lose some messages. I would like to provide the clients the possibility to recover the lost/missed massages later. It is clear, that this can be implemented with my server side application, by the client sending the request for resending the messages and the server resending them. However I was wondering, whether there is some possibility to leave this up to the Qpid broker. So far my only idea is to setup one queue per user where all messages for given user will be subscribed by default and persisted. The user would have the possibility to read the lost/missed messages from this queue later. Unfortunately this doesn't seem to be perfect, because 1) I cannot set the access to this queue as read only for the users (i.e. I have to relay on the client application, that they will not accept them and delete them from the queue) 2) To recover one lost message, the client would need to reread all messages from the queue, because there is no "seek" access, so the client application cannot skip some records to find the appropriate record without reading all of them 3) The client has to first find out that he lost some messages from the ring-type queue, which doesn't seem to be so easy, since there is no sequencing on queue level (and the sequencing on the exchange level is not useful, since on the topic exchange only some messages can be subscribed) Has someone been solving similar problem? Does anyone has some ideas how to set up the broker to provide such recovery? Thanks & Regards Jakub --------------------------------------------------------------------- Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:[email protected]
