All Projects → noxdafox → Rabbitmq Message Deduplication

noxdafox / Rabbitmq Message Deduplication

Licence: mpl-2.0
RabbitMQ Plugin for filtering message duplicates

Programming Languages

elixir
2628 projects

Projects that are alternatives of or similar to Rabbitmq Message Deduplication

Yii2 Rabbitmq
RabbitMQ Extension for Yii2
Stars: ✭ 52 (-62.59%)
Mutual labels:  rabbitmq, exchange
Rabbitmq Delayed Message Exchange
Delayed Messaging for RabbitMQ
Stars: ✭ 982 (+606.47%)
Mutual labels:  rabbitmq, exchange
Rabbitmq Consistent Hash Exchange
RabbitMQ Consistent Hash Exchange Type
Stars: ✭ 189 (+35.97%)
Mutual labels:  rabbitmq, exchange
Rabbitmq Event Exchange
Expose broker events as messages
Stars: ✭ 75 (-46.04%)
Mutual labels:  rabbitmq, exchange
Eventflow.example
DDD+CQRS+Event-sourcing examples using EventFlow following CQRS-ES architecture. It is configured with RabbitMQ, MongoDB(Snapshot store), PostgreSQL(Read store), EventStore(GES). It's targeted to .Net Core 2.2 and include docker compose file.
Stars: ✭ 131 (-5.76%)
Mutual labels:  rabbitmq
Distributed framework
python通用分布式函数调度框架 pip install function_scheduling_distributed_framework
Stars: ✭ 123 (-11.51%)
Mutual labels:  rabbitmq
Rabbitmq Prometheus
A minimalistic Prometheus exporter of core RabbitMQ metrics
Stars: ✭ 124 (-10.79%)
Mutual labels:  rabbitmq
Reactivetradercloud
Real-time FX trading showcase by Adaptive.
Stars: ✭ 1,664 (+1097.12%)
Mutual labels:  rabbitmq
Dotnetlabs
.NET Labs -- Show Me the Tips and Tricks and Code
Stars: ✭ 135 (-2.88%)
Mutual labels:  rabbitmq
Cve 2020 0688 exp
CVE-2020-0688_EXP Auto trigger payload & encrypt method
Stars: ✭ 134 (-3.6%)
Mutual labels:  exchange
Coinnect
Coinnect is a Rust library aiming to provide a complete access to main crypto currencies exchanges via REST API.
Stars: ✭ 130 (-6.47%)
Mutual labels:  exchange
Tardis Node
Convenient access to tick-level real-time and historical cryptocurrency market data via Node.js
Stars: ✭ 126 (-9.35%)
Mutual labels:  exchange
Bittrex.net
A C# .Net wrapper for the Bittrex web API including all features easily accessible and usable
Stars: ✭ 131 (-5.76%)
Mutual labels:  exchange
Pykrakenapi
A python implementation of the Kraken API.
Stars: ✭ 124 (-10.79%)
Mutual labels:  exchange
Hippo
💨A well crafted go packages that help you build robust, reliable, maintainable microservices.
Stars: ✭ 134 (-3.6%)
Mutual labels:  rabbitmq
Dubbo2.5 Spring4 Mybastis3.2 Springmvc4 Mongodb Redis
dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb-redis整合
Stars: ✭ 123 (-11.51%)
Mutual labels:  rabbitmq
Spring Boot Quick
🌿 基于springboot的快速学习示例,整合自己遇到的开源框架,如:rabbitmq(延迟队列)、Kafka、jpa、redies、oauth2、swagger、jsp、docker、spring-batch、异常处理、日志输出、多模块开发、多环境打包、缓存cache、爬虫、jwt、GraphQL、dubbo、zookeeper和Async等等📌
Stars: ✭ 1,819 (+1208.63%)
Mutual labels:  rabbitmq
Roq Api
API for algorithmic and high-frequency trading
Stars: ✭ 132 (-5.04%)
Mutual labels:  exchange
Aaframework
AA.Framework is built on the popular open source class library of NET Core
Stars: ✭ 128 (-7.91%)
Mutual labels:  rabbitmq
Sensu Ansible
An Ansible role to deploy a fully dynamic Sensu stack!
Stars: ✭ 126 (-9.35%)
Mutual labels:  rabbitmq

RabbitMQ Message Deduplication Plugin

Build Status

A plugin for filtering duplicate messages.

Messages can be deduplicated when published into an exchange or enqueued to a queue.

Installing

Supported RabbitMQ versions:

  • >= 3.7.17 use release marked v3.8.x
  • <= 3.7.16 is not supported anymore. Check previous versions of this plugin.

Download the .ez files from the chosen release and copy them into the RabbitMQ plugins directory.

Enable the plugin:

    [sudo] rabbitmq-plugins enable rabbitmq_message_deduplication

Building from Source

Please see RabbitMQ Plugin Development guide.

To build the plugin:

    git clone https://github.com/noxdafox/rabbitmq-message-deduplication.git
    cd rabbitmq-message-deduplication
    make dist

Then copy all the *.ez files inside the plugins folder to the RabbitMQ plugins directory and enable the plugin:

    [sudo] rabbitmq-plugins enable rabbitmq_message_deduplication

Exchange level deduplication

The exchange type x-message-deduplication allows to filter message duplicates before any routing rule is applied.

Each message containing the x-deduplication-header header will not be routed if its value has been submitted previously. The amount of time a given message will be guaranteed to be unique can be controlled via the x-cache-ttl exchange argument or message header.

Declare an exchange

To create a message deduplication exchange, just declare it providing the type x-message-deduplication.

Extra arguments:

  • x-cache-size: maximum number of entries for the deduplication cache. If the deduplication cache fills up, older entries will be removed to give space to new ones. This parameter is mandatory.
  • x-cache-ttl: amount of time in milliseconds duplicate headers are kept in cache. This parameter is optional.
  • x-cache-persistence: whether the duplicates cache will persist on disk or in memory. This parameter is optional. Default persistence type is memory.

Message headers

  • x-deduplication-header: messages will be deduplicated based on the content of this header. If the header is not provided, the message will not be checked against duplicates.
  • x-cache-ttl: this header is optional and will override the default value provided during the exchange declaration. This header controls for how many milliseconds to deduplicate the message. After the TTL expires, a new message with the same header will be routed again.

Queue level deduplication

A queue declared with the x-message-deduplication parameter enabled will filter message duplicates before they are published within.

Each message containing the x-deduplication-header header will not be enqueued if another message with the same header is already present within the queue.

NOTE: Mirrored and Quorum queues are currently not supported.

Declare a queue

When declaring a queue, it is possible to enable message deduplication via the x-message-deduplication boolean argument.

Message headers

  • x-deduplication-header: messages will be deduplicated based on the content of this header. If the header is not provided, the message will not be checked against duplicates.

Disabling the Plugin

It is possible to disable the plugin via the command:

    [sudo] rabbitmq-plugins enable rabbitmq_message_deduplication

All deduplication exchanges and queues will be rendered non functional. It is responsibility of the User to remove them.

Running the tests

    make tests

License

See the LICENSE file.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].