/java-beetle

Java version of the Beetle client library

Primary LanguageJavaMIT LicenseMIT

Beetle

High Availability AMQP Messaging with Redundant Queues

Java client library.

This package consists of there parts. The beetle-core library, redis-dedup-store implementing message deduplication using redis and a spring-adapter for easy integration with spring boot applications.

It also contains two sample spring boot projects in java and in kotlin.

This library enables sending redundant messages to multiple AMQP brokers each having a queue. This way, if one of the brokers crashes, the messages in the queue which are on the other broker will still be there. At the receiving side, the beetle client will deduplicate the messages and the handler will receive the message once (in case of successful handling).

How to use

Spring Integration

Spring users can directly use the provided Spring Integration dependency by adding it to their dependencies (pom.xml or gradle.build for instance).

The list of RabbitMQ servers should be configured using beetle.servers application property or BEETLE_SERVERS environment variable.

Example:

beetle.servers=localhost:5672,localhost:5673

For other configuration parameters see: https://source.xing.com/gems/xing-amqp#deployment-considerations

Spring Integration module defines a BeetleConnectionFactory bean (as @ConditionalOnMissingBean) extending from com.rabbitmq.client.ConnectionFactory, so by default Beetle Client will be used to communicate with RabbitMQ brokers unless another ConnectionFactory is configured.