4
votes

I am building the cluster with RabbitQM servers . I use shovel plugin to deliver mesages from one rabbitmq to other (different machines)

It works fine . But i want to test how it will behave when no network connection between servers.

On each server i have local queue. I push messages to it and then shovel delivers a message to remote rabbitmq queue

To emulate network problems i did

iptables -D OUTPUT -d xx.xx.xx.xx -j DROP

to disable connection to remote server xx.xx.xx.xx

then i push message to local queue, it disappears from the queue but is not on remote server! How can it be? does shovel check if remote queue is available before remove a message from a queue?

How to make it to work correctly? I want shovel doesn't remove a message from q queue till ensured ti si delivered to remote queue.

1
Could you post the output of rabbitmqctl list_channelsand rabbitmqctl reportduring the issue? create a gist with the outputs, if you can.Gabriele Santomaggio
I already found the solution, posted below. ThanksRoman Gelembjuk
Nice trick to emulate packet loss - I'll be adding that one to my toolboxPeter McEvoy

1 Answers

2
votes

I have found the solution for my problem. I changed settings os a shovel. There was the option

ask_mode,on_publish

I changed to

ask_mode, on_confirm

and it started to work correctly.