Bu örnekte ActiveMQ Armetis'de kuyruğa eklene mesajları alıyoruz
ActiveMQ Artmesin için aşağıdaki Maven tanımı eklenir:
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>artemis-jms-client</artifactId>
<version>2.6.3</version>
</dependency>
Eklenen mesajlar aşağıdaki uygulama ile alınabilir:
package com.thy.mercury.activemq.client;
import java.io.IOException;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory;
import org.apache.activemq.artemis.jms.client.ActiveMQQueue;
import org.apache.activemq.artemis.jms.client.ActiveMQSession;
public class ArtemisConsumerTest {
public static void main(String[] args) {
Connection connection = null;
Session session = null;
try {
ConnectionFactory cf =
new ActiveMQConnectionFactory("tcp://activemqtest.fibiler.com:1234");
connection = cf.createConnection();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
((ActiveMQSession) session).start();
ActiveMQQueue activeMQQueue =
new ActiveMQQueue("queue.FIBILER::TEST");
MessageConsumer messageConsumer =
session.createConsumer(activeMQQueue);
messageConsumer.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message message) {
System.out.println(message);
if (message instanceof TextMessage) {
try {
System.out.println(
((TextMessage) message).getText());
} catch (JMSException e) {
e.printStackTrace();
}
} else {
System.out.println(message);
}
}
});
try {
System.in.read();
} catch (IOException e) {
e.printStackTrace();
}
} catch (JMSException e) {
e.printStackTrace();
} finally {
if (session != null) {
try {
session.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
if (connection != null) {
try {
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
}
}
Factory olarak ActiveMQConnectionFactory sınıfını kullanıyoruz. Connection ve Session yaratma JMS standarlarına göre yapılır. Consumer için session başlatılır. Kuyruk olarak ActiveMQQueue sınıfı kullanılmalıdır. Bu sınıf bir adres bir de kuyruk adı almaktadır. Consumer'da bir MessageListener yaratılır ve verilir.
En alta eklenen
try {
System.in.read();
} catch (IOException e) {
e.printStackTrace();
}
satırları uygulamanın kapanmamasını ve beklemesini sağlamaktadır.
Eğer herhangi bir mesaj gelirse ekrana mesaj basılacaktır.