The ProActiveQueue Project is a highly opinionated library focused on quick & reliable ActiveMQ messaging in Java. In addition, this project is intended (but not required) to be connected with AWS ECS for queue-scaled microservices.
- Fast, Opinionated, Reliable messaging with ActiveMQ/AmazonMQ
- Fast, Opinionated, Responsive Microservice scaling based on an ActiveMQ Queue 2.a Stack: AWS ECS Fargate, AmazonMQ/ActiveMQ
On the messaging side, ActiveMQ java integrations require a lot of boilerplate code gathered from various documentation sources in order to get useful production work done. The ProActiveQueue project aims to minimize the time to get off the ground with ActiveMQ with strong opinions on:
- Transactions: If messages aren't processed, they are returned for processing in the future
- Batching: Send and recieve messages in batches within the same connection/transaction
- Minimal Boilerplate: Configuring, Receiving, and Sending should require minimal code
On the AWS microservice side, this project aims to effortlessly link AWS AmazonMQ/ActiveMQ with AWS ECS Fargate. The integration goals are aimed at the following architecture/flow:
- A group of messages are sent from 1 (or more) applications to an ActiveMQ Queue.
- The messages are detected and an AWS ECS cluster spins up the required containers to process all messages.
- The messages are transactionally processed across AWS ECS (Fargate) containers.
- The AWS ECS cluster scales down as all messages are processed
Always check for the latest tag in github
<dependency>
<groupId>com.github.TheDropZone</groupId>
<artifactId>ProActiveQueueClient</artifactId>
<version>0.0.6</version>
</dependency>
To play around with the library, you can spin up a local embedded broker. The below example shows how to send and recieve with an embedded broker.
QueueConfig config = new QueueConfig("vm://localhost?broker.persistent=false",null,null);
AsyncMessageTest.factory = config.getActiveMQConnectionFactory();
//to-do