Metadata-Version: 2.1
Name: aec
Version: 0.1.1
Summary: ActiveMQ Easy Config
Home-page: https://github.com/byjg/activemq-easy-config
Author: Joao Gilberto Magalhaes
Author-email: joao@byjg.com.br
License: UNKNOWN
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Description-Content-Type: text/markdown
Requires-Dist: pyyaml (>=3.0)

# ActiveMQ Easy Config

This project aims a easy way to setup a network of ActiveMQ brokers. You can change easily the topology and this 
script will create the configurations based on your setup. ActiveMQ Easy Config will produce for you:

- An `activemq.xml` file for each broker with the specific configuration for the broker
- A Docker image for each broker to easy adapt in your container orchestrator.
- A script for run the docker image locally in order to test your network locally.


# How it works?

Let's take an example of a duplex connection between two ActiveMQ brokers: 

```

   +----------+                    +----------+
   |          |       Duplex       |          |  
   | Broker 1 | ---<-->----<-->--- | Broker 2 |
   |          |                    |          | 
   +----------+                    +----------+

```

First you have to define the `yaml` file with the configuration of your network:

```yaml
brokers:
  node1: "static:(tcp://node1:61616)"
  node2: "static:(tcp://node2:61616)"

networks:
  common_configuration:
    conduit_subscriptions: "true"
    consumer_ttl: "1"
    duplex: "true"
    message_ttl: "-1"
    physical_name: ">"
    user_name: "admin"

  network_connector:
    node1:
      to:
        - node2
      config:
        duplex: "false"
    node2:
      to:
        - node1
``` 

The first topic in the yaml will define the broker and your respective connection. 
If you intend to use docker, the address can be the broker name. 

You can see a lot of examples of network of brokers in the directory `templates`. In the same directory
you have an `activemq.xml` file used as base also.

After create your template you can just run:

```bash
python aec.py \
    --config templates/simple-duplex-config.yaml \
    --activemq templates/activemq.xml \
    --save-to /my/path/project
```

And you'll get the follow files as result:

- build.sh
- Dockerfile
- node1.xml
- node2.xml
- run.sh

You can run `build.sh` to build the docker images and `run.sh` to run the containers in your local machine. 

The docker image created can easily adapted to run on Kubernetes, Docker Swarm or ECS.

In the folder `check` you can run a simple producer/consumer to check the communication.

# Installing

Just clone the repository.

```bash
git clone git@github.com:byjg/activemq-easy-config
```  

# To Do

Help here is appreciate :)

- This configuration can be expanded to other features on ActiveMQ.
- Example of configuration with `failover:` and `masterslave:`
- Example with `ssl:`
- K8s implementation
- Docker swarm implementation
- ECS implementation 


