You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Is there any way to view/retrieve the waiting message in exchange , and it's x-delay value?
And what will be the plugin behaviour, if the x-delay is an neagtive value like -17 ? (In our client logs we saw some messages are pushed to exchange with negative value)
negative values are treated as "already expired" so will be routed immediately (same as a delay of zero)
when the exchange delivers a message after the delay to queues it changes the message's x-delay header to the negative value of the original delay. This way if the message ends up routed again to a delayed exchange it wont be delayed again. This way preventing duplicate delays.
In the consuming client side you might see negavite delay header values because of this
there is no easy way to inspect the currently delayed messages or their x-delay values. The messages are stored in Mnesia tables so if someone is proficient in Erlang and has access to the server it is possible but not obvious.
Older versions of this plugin had a bug where the plugin process could get stuck and not delivering expired messages to queues. #214
What is mean by expired messages here ? We did not configured any expiration to the message while pushing into the exchange.
We only configured x-delay while sending the message.
Only way out is to upgrade RabbitMQ and the plugin to at least 3.12.
Currently we using RMQ 3.8.7 , Erlang 23.2.1 , rabbitmq-delayed-message-exchange - 3.9.0
Only upgrading plugin 3.9.0 > 3.12. is sufficient ? or we need to upgrade the RMQ also ?
Or to disable/enable the plugin which cleans out the plugin's DB and starts from scratch (obviously this implies message loss)
In this option , I like to understand the life-cycle of the plugin,
How it will affect the current RMQ , while performing disable / enable ?
Only the messages will be cleared?
Prevent it in future
Is there any option to configure max message-ttl in exchange ?
sorry for confusion. what I meant is that the message reached its delay value and it's time for the exchange to deliver it to some queues.
Only upgrading plugin
No, it is not possible. Each plugin version only supports a given minor version series. Plugin v3.12.0 only can be installed on RabbitMQ 3.12.x (this was not always the case, but true for recent plugin versions)
In this option , I like to understand the life-cycle of the plugin,
When the plugin is disabled is clears all its data (ie the delayed messages) and unregisters the x-delayed-message exchange type. It does not delete declared exchanges with the type x-delayed-message , but you might see error logs saying the type is unknown, until the plugin is enabled again.
Is there any option to configure max message-ttl in exchange ?
No. The delayed exchange is not a queue. It does not handle the x-message-ttl header. But the x-delay header is essentially the same (if the plugin works correctly)
I encourage you to upgrade both RabbitMQ and the plugin. 3.8 is 5 years old and many-many bug fixes and improvements went into newer versions since then.
Disabling the plugin affects the all the exchanges we have, but we have issue only in one exchange.
So , can we delete the exchange , is the exchange deletion clears the messages ?
We are declaring the exchange and binding it to the queue in the code itself on demand only , so it will be auto declared.
No, deleting one exchange does not delete the messages belonging to that exchange (maybe it should but this is not implemented currently) The delayed message plugin has a singleton process that handles all the publishes to and deliveries from all the delayed exchanges on that node. So if you have problem only with one exchange that suggests that it is not the problem of the plugin.
I have tried it in our dev environment, deleted the exchange, declared the exchange with same name again via code , previous messages which are already in exchnage are gone.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
#123 (comment)
@gomoripeti
Beta Was this translation helpful? Give feedback.
All reactions