rabbitmq-delayed-message-exchange
rabbitmq-delayed-message-exchange copied to clipboard
Specifying a Delay Through Exchange Argument
Motivation:
Since the x-delay
is a message header attribute, delay can only be specified per message and through publisher's code.
There should be an alternative way for specifying the desired delay as for these goals:
- Seamlessly support running systems: In case of current running system, adding delayed messages requires change in the existing publishers code. We prefer not to make any modifications to the existing publishers.
- Policy-like behavior: support for specifying the same default delay to all queues, current and future ones, for all messages.
Implementation:
The requirement can be achieved through:
- Exchange argument - the optimal approach.
- Plugin configuration setting - less optimal, but might be more easy as for current internal API parts.
Point to consider:
There should be a clear priority which according to the delay is specified. In my opinion, this is the right priority:
- If exists in the message header argument, the delay is specified by this argument.
- If exists in the exchange argument, the delay is specified by the this argument.
- If no relevant argument is found, then the message will not be delayed.
I'm asking without any knowledge about how the plugins work.
We use rabbitmq-message-deduplication which also uses a custom exchange type, so we couldn't use both. We can't have unique delayed events which would be great.