rabbitmq/rabbitmq-delayed-message-exchange

Plugin not working on rabbitmq-server version 3.8.4-1

ravihara opened this issue · 11 comments

Today, we have upgraded the rabbitmq-server and placed this plugin appropriately. We could see this plugin in the list of loaded plugins and also, our exchange was showing all fine except that, none of the published messages were getting into the queue.

Temporary resolution: We have downgraded the rabbitmq-server to 3.8.3-1 and things started working again. So, it looks likes, somewhere in the plugin internal logic it has become incompatible with 3.8.4-1 of rabbitmq-server.

I guess, issue logged at wrong place. Sorry!

@ravihara just so that our team and the readers can find it, would you mind linking to the correct place? What plugin are we talking about?

@ravihara you must download the plugin from this URL for 3.8 versions of RabbitMQ:

https://github.com/rabbitmq/rabbitmq-lvc-exchange/releases/tag/v3.8.0

Test process:

  • Download, install and enable the plugin from the above url
  • Start RabbitMQ
  • Create an exchange with x-lvc type called lvc
  • Create a queue, bind to the exchange using routing key test-lvc
  • Publish a message to the lvc exchange using routing key test-lvc. The message shows up in the queue.
  • Create a new queue, bind to the exchange using routing key test-lvc
  • As expected, the same message is routed to the new queue

Hi Sorry!! It's my bad.. I was raising the issue for https://github.com/rabbitmq/rabbitmq-delayed-message-exchange (delayed exchange plugin) but, wrongly landed at this repo by mistake.

Hi, I have been using the plugin as mentioned by you in the link for quite sometime. It was working nicely till 3.8.3-1 version of rabbitmq-server but, starting with 3.8.4-1 I'm not seeing the messages getting delivered to queues of the delayed-exchange any more.

When I publish to the queue, I do get successful message-id at the publishing end but, the worker/consumer doesn't get any job in the subscribed delayed queue. The same code just works perfectly with rabbitmq-server 3.8.3-1 without any change.

I have cross verified it by completely removing rabbitmq-server and reinstalling afresh. It surely looks like a minor code incompatibility with latest rabbitmq-server and rabbitmq-delayed-message-exchange v3.8.0 (at least, in Ubuntu 18.04 LTS 64 bit).

Thank you for your time.

Team RabbitMQ uses GitHub issues for specific actionable items engineers can work on. GitHub issues are not used for questions, investigations, root cause analysis, discussions of potential issues, etc (as defined by this team).

We get at least a dozen of questions through various venues every single day, often light on details.
At that rate GitHub issues can very quickly turn into a something impossible to navigate and make sense of even for our team. Because GitHub is a tool our team uses heavily nearly every day, the signal/noise ratio of issues is something we care about a lot.

Please post this to rabbitmq-users.

Thank you.

We have no evidence of any code incompatibilities. Please start a mailing list thread and provide a small application that demonstrates successful delayed publishing/routing with 3.8.3 but not 3.8.4, as well as server logs.

I cannot reproduce. The plugin works as advertised in the README for me on a fresh 3.8.4 generic UNIX instance with this plugin installed from the link provided by Luke above.

Here are the steps that were taken to verify:

  • Stop the node
  • Download the plugin to its ./plugins directory: wget https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/download/v3.8.0/rabbitmq_delayed_message_exchange-3.8.0.ez
  • Start the node in the foreground: ./sbin/rabbitmq-server
  • Check logs for any errors with rabbitmq-diagnostics log_tail -N 300: there were none
  • Enable the plugin with rabbitmq-plugins enable rabbitmq_delayed_message_exchange
  • Verify plugin status with rabbitmq-plugins list: [E*] rabbitmq_delayed_message_exchange 3.8.0
  • Connect from a Ruby REPL using Bunny, open a channel
  • Declare a queue
  • Declare a non-delayed fanout exchange, bind the queue to it
  • Start a consumer that prints out all message details that it receives so that I can observe deliveries
  • Declare a durable delayed message exchange with the following arguments: dx = ch.exchange("delayed", durable: true, type: "x-delayed-message", arguments: {"x-delayed-type" => "fanout"})
  • Bind the queue to it
  • Publish a message to it without any delay
  • Observe a message delivery
  • Publish a message with a 5 second delay: dx.publish("delayed by 5s", headers: {"x-delay" => 5000})
  • Observe a delivery after 5 seconds
  • Inspect server logs once again

I also cannot see any relevant changes in 3.8.x in general, and specifically 3.8.4. So we need more data to work with. Please provide it on the mailing list.