EzyActiveMQ Configuration

1. Configuration List

EzyActiveMQ provides a list of configurations in bellow table:
# Property Default Value Description
1activemq.urifailover://tcp://localhost:61616ActiveMQ uri
2activemq.usernamenullActiveMQ username
3activemq.passwordnullActiveMQ password
4activemq.max_thread_pool_size1000Max thread pool size
6activemq.producersnullList of ActiveMQ producers
5activemq.consumersnullList of ActiveMQ consumers
7activemq.topicsnullList of ActiveMQ topics
For every producer, EzyActiveMQ provides bellow properties:
# Property Default Value Description
1request_queue_name[producer name]-requestName of the request queue
2reply_queue_name[producer name]-replyName of the reply queue
3thread_pool_size1Thread pool size for reply message consumer
4capacity10000Capacity of the producer
5default_timeoutno timeoutDefault timeout of a rpc request in millisecond
For every consumer, EzyActiveMQ provides bellow properties:
# Property Default Value Description
1request_queue_name[consumer name]-requestName of the request queue
2reply_queue_name[consumer name]-replyName of the consumer's request queue of the producer
3thread_pool_size1Thread pool size for rquest message consumer
For every topic, EzyActiveMQ provides bellow properties:
# Property Default Value Description
1producernullProducer for the topic settings
2producer.enabletrue if producer is not nullEnable producer or not
3consumernullConsumer for the topic settings
4consumer.enabletrue if consumer is not nullEnable consumer or not

2. An Example

Let's we neen create a producer and a consumer named test and a topic named hello, you can put bellow configuration to your application.yaml file:
# for application.yaml
activemq:
  producers:
    test: default
  consumers:
    test: default
  topics:
    hello:
      producer: default
      consumer: default
Or for application.properties file:
# for application.properties
activemq.producers.test=default
activemq.consumers.test=default
activemq.topics.hello.producer=default
activemq.topics.hello.consumer=default

3. Configure for producer

You can configure for producer like this:
EzyActiveMQProxy proxy = EzyActiveMQProxy.builder()
    .scan("com.tvd12.ezymq.activemq.test")
    .mapTopicMessageType("hello", "hello", SumRequest.class)
    .build();
EzyActiveRpcProducer producer = proxy.getRpcProducer("test");

4. Configure for consumer

You can configure for consumer like this:
EzyActiveMQProxy.builder()
    .addSingleton(someSingleton)
    .scan("com.tvd12.ezymq.activemq.test")
    .build();

5. Topic usage

You can get the topic like this:
EzyActiveTopic<SumRequest> sumTopic = proxy.getTopic("hello");
And use the topic to publish a message like this:
sumTopic.publish("hello", new SumRequest(a, b));
You also can add message consumer for the topic like this:
sumTopic.addConsumer("hello", message ->
    System.out.println("sum request: " + message)
);