Hey guys -<div><br></div><div>I'm seeing some unexpected behaviors with lost messages and I wanted to make sure that this is intended by RabbitMQ.</div><div><br></div><div>I have a queue called "messages.log" set up with the following configuration:</div>
<div>* x-message-ttl: 15000 (15s)</div><div>* x-dead-letter-exchange: messages.retry</div><div>* durable: true</div><div><br></div><div>The expectation is that when I publish a persistent message to "messages.log" it will sit in the queue for 15s, after which point it'll be dead-lettered into the "messages.retry" exchange.</div>
<div><br></div><div>I'm seeing the following behaviors:</div><div>* When a persistent message is published to "messages.log", after 15s it gets delivered to the "messages.retry" exchange and lands into the queue bound to that exchange.</div>
<div>* When a persistent message is published to "messages.log" and the rabbitmq process then gets force-stopped for less than 15s (i.e. total time for stopping and starting rabbitmq is less than 15s), the message is still in "messages.log" and eventually gets delivered to the "messages.retry" exchange when the TTL is hit</div>
<div>* <b>However</b>, when a persistent message is published to "messages.log" and the rabbitmq process then gets force-stopped for <u>more than 15s</u>, the message disappears. It's not in "messages.log" and it's not in the queue bounded to "messages.retry".</div>
<div><br></div><div>My interpretation is that if the RabbitMQ process is not running when a message's TTL is reached, then the message does not get properly dead-lettered -- it, instead, just gets dropped on the floor.</div>
<div><br></div><div>Is my understanding correct? Is that the intended behavior? If so, is there any way to ensure that this message gets properly persisted / recovered?</div><div><br></div><div>Thanks for any thoughts!</div>
<div><br></div><div>-Aaron</div>