Brent Villalobos wrote:
I'm trying to figure out how to configure exchanges, queues, and messages so that messages will persist even if the broker goes down. I have a simple producer with the following code (this is a snippet of a larger code base):

   # Get a session and open it
   channel = client.channel(1)
   channel.channel_open()

   # Create the exchange and queue and bind them together
channel.exchange_declare(exchange="message_queue", type="direct", durable=True)
   channel.queue_declare(queue=queueName, exclusive=False, durable=True)
channel.queue_bind(exchange="message_queue", queue=queueName, routing_key=routingKey)

   print "Sending message to queue '%s': '%s'" % (queueName, messageText)
   message = Content(messageText)
   message["routing_key"] = routingKey
channel.basic_publish(content=message, routing_key=routingKey, exchange="message_queue")

   reply = channel.queue_declare(queue=queueName)
print "Number of messages in queue '%s': %d" % (queueName, reply.message_count)

   # Close the session before exiting so there are no open threads.
   channel.channel_close()

I set the exchange and queue to be durable, however my message count goes back to zero each time I restart the broker. I'm using the Java broker with the default config.xml file. What am I missing? Do I need to so something special with the message to make it persistent?
-Brent Villalobos

My guess would be that you don't have a store module loaded + the message also need to be market as durable.

Marking the exchange and binding as durable makes those definitions persistent. The messages can/need to be marked durable

Carl.

Reply via email to