qpid-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Brent Villalobos <Brent.Villalo...@pdi.dreamworks.com>
Subject Re: Python Client: durability?
Date Mon, 10 Mar 2008 17:39:41 GMT
I have tried setting "delivery mode" to 2 for a Content object and also 
setting up my exchange and queue to "durable=True".  Right now I am 
using the default persistence configuration (aka: "in-memory", not 
Berkeley DB).  Perhaps I don't understand the persistence model, but it 
seems to me that all the qpid exchange/queue/message data would be 
erased when the broker quits since it was all in memory, not written to 
disk.   Will persistence only work when I use something like Berkeley DB?

Here was my test (correct me if I'm doing something wrong):
1.  Launch the QPID Java broker
2.  Setup and bind a direct exchange and queue with durable=True.
3.  Have a producer script create a Content object with the "delivery 
mode" property set to 2.
4.  Send the message to the exchange using a "basic_publish".  There is 
now one unconsumed message on the queue.
5.  Kill the broker with a linux "kill" command to simulate some sort of 
system failure.
6.  Restart the broker
7.  Produce another message, there should now be two messages in the 
queue.  However, in my test I'm only seeing one message.

Martin Ritchie wrote:
> On 05/03/2008, Gordon Sim <gsim@redhat.com> wrote:
>> Carl Trieloff wrote:
>>  > the store is a module that the daemon loads. For M2 which is AMQP 0-8
>>  > here are notes http://cwiki.apache.org/qpid/getting-started-guide.html
>> More specifically: http://cwiki.apache.org/qpid/3rd-party-libraries.html
>>  > in terms of python code fragment to set durability for 0-8 I will let
>>  > someone that know what the best example is comment
>> Something like the following will work for 0-8:
>>  #make the queue durable:
>>  channel.queue_declare(queue="myqueue", durable=True)
>>  #mark the published message as durable (delivery-mode=2,
>>  #where 2 implies durability):
>>  channel.basic_publish(routing_key="myqueue",
>>      content=Content("MyMessage", properties={'delivery_mode':2}))
> IIRC on M2 the delivery mode property is 'delivery mode' note the lack of '_'.
>>  A durable message enqueued on a durable queue will survive even if the
>>  broker goes down.
>>  (Note, If you create exchanges other than the standard ones -
>>  amq.direct, amq.topic etc) you can specify durable=true to them also.
>>  That way the bindings to durable queues will be restored on recovery.
>>  The standard exchanges are all durable by default.)

View raw message