qpid-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jakub Scholz <a...@scholzj.com>
Subject Recovery of lost/missed messages by the client
Date Fri, 14 Jan 2011 14:50:53 GMT

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

Has someone been solving similar problem? Does anyone has some ideas
how to set up the broker to provide such recovery?

Thanks & Regards

Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:users-subscribe@qpid.apache.org

View raw message