[Why] All callers of `khepri_adv` and `khepri_tx_adv` need updates to handle the now uniform return type of `khepri:node_props_map()` in Khepri 0.17.0. [How] We don't need any compatibility code to handle "either the old return type or the new return type" from the khepri_adv API because the translation is done entirely in the "client side" code in Khepri - meaning that the return value from the Ra server is the same but it is translated differently by the functions in `khepri_adv`. However, we need to adapt transaction functions because they may be executed on different versions of Khepri and the behaviour of `khepri_tx_adv` can be different. To take the possible change of return value format, we use the new `khepri_tx:does_api_comply_with/1` to know what to expect. |
||
|---|---|---|
| .. | ||
| etc | ||
| include | ||
| src | ||
| test | ||
| CODE_OF_CONDUCT.md | ||
| CONTRIBUTING.md | ||
| LICENSE | ||
| LICENSE-MPL-RabbitMQ | ||
| Makefile | ||
| README.md | ||
README.md
RabbitMQ Recent History Cache
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 yype: x-recent-history.
Installation
This plugin ships with RabbitMQ.
Like all other plugins, it must be enabled before it can be used:
[sudo] rabbitmq-plugins enable rabbitmq_recent_history_exchange
Usage
Creating an exchange
To create a recent history exchange, just declare an exchange providing the type "x-recent-history".
channel.exchangeDeclare("logs", "x-recent-history");
Providing a custom history length
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);
Preventing some messages from being stored
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.
Disabling the Plugin
When you disable this plugin, it will delete all the cached messages.
License
See LICENSE.