This repository has been moved to the main unified RabbitMQ "monorepo", including all open issues. You can find the source under /deps/rabbitmq_recent_history_exchange. All issues have been transferred.
Keeps track of the last 20 messages that passed through the exchange. Every time a queue is bound to the exchange it delivers that last 20 messages to them. This is useful for implementing a very simple Chat History where clients that join the conversation can get the latest messages.
Exchange Type: x-recent-history
As of RabbitMQ 3.6.0
this plugin is included into the RabbitMQ distribution.
Enable it with the following command:
rabbitmq-plugins enable rabbitmq_recent_history_exchange
Install the corresponding .ez files from our Community Plugins archive..
Then run the following command:
rabbitmq-plugins enable rabbitmq_recent_history_exchange
Please see RabbitMQ Plugin Development guide.
To build the plugin:
git clone git://github.com/rabbitmq/rabbitmq-recent-history-exchange.git
cd rabbitmq-recent-history-exchange
make
Then copy all the *.ez
files inside the plugins
folder to the RabbitMQ plugins directory
and enable the plugin:
[sudo] rabbitmq-plugins enable rabbitmq_recent_history_exchange
To create a recent history exchange, just declare an exchange providing the type "x-recent-history"
.
channel.exchangeDeclare("logs", "x-recent-history");
Typically this exchange will store the latest 20 messages sent over
the exchange. If you want to set a different cache length, then you
can pass a "x-recent-history-length"
argument to exchange.declare
.
The argument must be an integer greater or equal to zero.
For example in Java:
Map<String, Object> args = new HashMap<String, Object>();
args.put("x-recent-history-length", 60);
channel.exchangeDeclare("rh", "x-recent-history", false, false, args);
In case you would like to not store certain messages, just
add the header "x-recent-history-no-store"
with the value true
to
the message.
A future version of RabbitMQ will allow users to disable plugins. When you disable this plugin, it will delete all the cached messages.
See LICENSE.