[rabbitmq-discuss] When is persister.log.previous made?

tsuraan tsuraan at gmail.com
Mon Oct 19 17:10:36 BST 2009

> As an aside, why are you using transactions on the consuming side? I
> have yet to come across a use case where that is genuinely required.

Our consumers are almost always also producers, so we do the message
ack and the creation of new messages in a transaction.  I'm not sure
that it's necessary; I'm used to databases, where I tend to do
everything in a transaction to ensure that everything is consistent
when I'm done, but our messaging stuff is designed to handle multiple
copies of the same message, so it's probably a bit overkill to also
use transactions.

I seem to remember that I had some problem when I was first looking at
rabbit that I could publish a stream of messages in non-transactional
mode, and not all the messages would be delivered (or enqueued).  I
think I may have been doing something stupid like exiting my program
without closing my channel, but moving to transactional mode fixed the
problem, and I think I've been a bit religious about transactions
since then.

> When rolling the persister log, rabbit writes a snapshot of all
> currently persisted messages, and it needs to allocate memory for that
> entire snapshot.

Ok, that explains it.

>> Also, will the future (1.8?) persister still do the process described
>> in https://dev.rabbitmq.com/wiki/RabbitPersisterDesign ?
> No.

Glad to hear it :)


More information about the rabbitmq-discuss mailing list