1. 소개

Apache ActiveMQ 기반의 서비스인 Amazon MQ가 발표되었다. 즉, 매니지드 메세지 브로커 서비스이다.


2. 서비스

  • ActiveMQ 콘솔
  • 프로토콜 : JMS, NMS, AMQP, STOMP, MQTT 및 WebSocket

3. 콘솔


4. 생성

  • AWS 콘솔에서 간단히 브로커 생성이 가능하다.
  • 생성하면 바로 생성되지는 않고 약 10분 정도 소요되는 것 같았다.
  • 퍼블릭 억세스 가능하다. (단, Security Group 오픈이 필요함)

5. 애플리케이션에서 Amazon MQ 연결 및 메세지 전송

5-1. pom.xml 파일에 추가

* 2018년 2월 현재 AWS를 통한 Active MQ 서버 버전은 5.10.0 이다.

<dependencies>
    <dependency>
        <groupId>org.apache.activemq</groupId>
        <artifactId>activemq-client</artifactId>
        <version>5.15.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.activemq</groupId>
        <artifactId>activemq-pool</artifactId>
        <version>5.15.0</version>
    </dependency>
<dependencies>

5-2. JMS Connection Factory 생성

// Create a connection factory.
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("ssl://b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-east-1.amazonaws.com:61617");
 
// Specify the username and password.
connectionFactory.setUserName("MyUsername123");
connectionFactory.setPassword("MyPassword456");

// Create a pooled connection factory.
PooledConnectionFactory pooledConnectionFactory = new PooledConnectionFactory();
pooledConnectionFactory.setConnectionFactory(connectionFactory);
pooledConnectionFactory.setMaxConnections(10);

// Establish a connection for the producer.
Connection producerConnection = pooledConnectionFactory.createConnection();
producerConnection.start();

5-3. Session 및 Message Producer 생성

// Create a session.
Session producerSession = producerConnection.createSession(false, Session.AUTO_ACKNOWLEDGE);

// Create a queue named "MyQueue".
Destination producerDestination = producerSession.createQueue("MyQueue");

// Create a producer from the session to the queue.
MessageProducer producer = producerSession.createProducer(producerDestination);
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);

5-4. 메세지 생성 및 전송

// Create a message.
String text = "Hello from Amazon MQ!";
TextMessage producerMessage = producerSession.createTextMessage(text);

// Send the message.
producer.send(producerMessage);
System.out.println("Message sent.");

5-5. Producer 초기화

producer.close();
producerSession.close();
producerConnection.close();