Jesse Bexten
2015-07-21 13:42:25 UTC
Ok, I'm going to to my best to explain this issue. We have 2 rabbit
instances running.
One runs locally with our application in order to have a persistent local
store for messages. This local installation has a single queue with a
shovel attached to it. All messages are then shovel to our second rabbit
installation on our queue server. This server has a topic exchange and
several queues that are read by various clients in our company.
The issue we are having is this. We are testing the various failure
scenarios for our queue setup. If we destroy the queue server with vagrant
while messages are being sent, then we have some un-acked messages on our
rabbit instance on the application server. However when we recreate the
queue server, it appears that the unacked messages are not re-sent to the
queue server by the shovel, they are simply lost. We expected the messages
to be re-queued when the server was destroyed.
Our shovel configuration is as follows.
{rabbitmq_shovel,
[ {shovels, [ {say_shovel,
[ {sources,
[ {brokers, [ "amqp://"]}
, {declarations, [ {'exchange.declare',
[ {exchange, <<"shove_it">>}
, {type, <<"topic">>}
, durable
]}
, {'queue.declare',
[{queue,<<"shove_q">>},
{arguments,
[{<<"x-message-ttl">>, long, 60000}]}]}
, {'queue.bind',
[ {exchange, <<"shove_it">>},
{queue, <<"shove_q">>},
{routing_key,<<"#">>}
]}
]}
]}
, {destinations,
[ {broker, "amqp://shovel:hostname:5672/%2F"}
, {declarations, []}
]}
, {queue, <<"shove_q">>}
, {prefetch_count, 10}
, {ack_mode, on_confirm}
, {publish_properties, [ {delivery_mode, 2} ]}
, {add_forward_headers, true}
, {publish_fields, [ {exchange, <<"exchange_name">>}]}
, {reconnect_delay, 5}
]}
]}
]},
instances running.
One runs locally with our application in order to have a persistent local
store for messages. This local installation has a single queue with a
shovel attached to it. All messages are then shovel to our second rabbit
installation on our queue server. This server has a topic exchange and
several queues that are read by various clients in our company.
The issue we are having is this. We are testing the various failure
scenarios for our queue setup. If we destroy the queue server with vagrant
while messages are being sent, then we have some un-acked messages on our
rabbit instance on the application server. However when we recreate the
queue server, it appears that the unacked messages are not re-sent to the
queue server by the shovel, they are simply lost. We expected the messages
to be re-queued when the server was destroyed.
Our shovel configuration is as follows.
{rabbitmq_shovel,
[ {shovels, [ {say_shovel,
[ {sources,
[ {brokers, [ "amqp://"]}
, {declarations, [ {'exchange.declare',
[ {exchange, <<"shove_it">>}
, {type, <<"topic">>}
, durable
]}
, {'queue.declare',
[{queue,<<"shove_q">>},
{arguments,
[{<<"x-message-ttl">>, long, 60000}]}]}
, {'queue.bind',
[ {exchange, <<"shove_it">>},
{queue, <<"shove_q">>},
{routing_key,<<"#">>}
]}
]}
]}
, {destinations,
[ {broker, "amqp://shovel:hostname:5672/%2F"}
, {declarations, []}
]}
, {queue, <<"shove_q">>}
, {prefetch_count, 10}
, {ack_mode, on_confirm}
, {publish_properties, [ {delivery_mode, 2} ]}
, {add_forward_headers, true}
, {publish_fields, [ {exchange, <<"exchange_name">>}]}
, {reconnect_delay, 5}
]}
]}
]},
--
You received this message because you are subscribed to the Google Groups "rabbitmq-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rabbitmq-users+***@googlegroups.com.
To post to this group, send an email to rabbitmq-***@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
You received this message because you are subscribed to the Google Groups "rabbitmq-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rabbitmq-users+***@googlegroups.com.
To post to this group, send an email to rabbitmq-***@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.