ActiveMQ受信メッセージ
2516 ワード
前にActiveMQがメッセージを送信する例を書きました.JavaがActiveMQメッセージを受信したコードを記録します.すべて私の仕事の中で書いたのです.皆さんに少し助けてほしいです.コードは次のとおりです.
上記の詳細なコメントは、上記の受信方法を実行すると、対応するキューの未受信メッセージが印刷されます.ActiveMQの監視制御ページでは、すでに消費されているメッセージが表示されます.
package com.syxp.dns.receive;
import javax.jms.Connection;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.log4j.Logger;
public class ReceiveMessageFromMQ {
private static String url = "tcp://localhost:61616";
private static String user = "";
private static String password = "";
private static Logger logger = Logger.getLogger(ReceiveMessageFromMQ.class);
public void receiveMessage(){
//
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(user, password, url);
//
Connection connection;
try {
connection = connectionFactory.createConnection();
connection.start();
// Session
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// ,
Destination destination = session.createQueue("integratedalarm.subject");
//
MessageConsumer consumer = session.createConsumer(destination);
// , : , 0 ,receive , , null
Message message = consumer.receive(1000);
if (message instanceof TextMessage) {
TextMessage textMessage = (TextMessage) message;
String text = textMessage.getText();
logger.info(" :"+"
"+text);
} else {
logger.info(" :"+"
"+message);
}
consumer.close();
session.close();
connection.close();
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
ReceiveMessageFromMQ receiveMessageFromMQ = new ReceiveMessageFromMQ();
receiveMessageFromMQ.receiveMessage();
}
}
上記の詳細なコメントは、上記の受信方法を実行すると、対応するキューの未受信メッセージが印刷されます.ActiveMQの監視制御ページでは、すでに消費されているメッセージが表示されます.