【发布时间】:2016-01-01 21:54:19
【问题描述】:
如何配置我的 J2EE 应用程序以便我可以调用 ActiveMQ 服务和 tomcat 服务器?我知道嵌入式代理,这里询问如何在我启动 tomcat 时启动 ActiveMQ
当前代码(工作正常): 现在想去掉main()方法,在tomcat运行时使用代码运行。
public class JMSService {
public void produceJMS() throws NamingException, JMSException {
ConnectionFactory connFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_BROKER_URL);
Connection conn = connFactory.createConnection();
conn.start();
Session session = conn.createSession(false,Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue("testQueue");
MessageProducer producer = session.createProducer(destination);
producer.setDeliveryMode(DeliveryMode.PERSISTENT);
TextMessage message = session.createTextMessage("Test Message ");
// send the message
producer.send(message);
System.out.println("sent: " + message);
}}
这是我的消费者:
public class JMSReceiver implements MessageListener,ExceptionListener {
public static void main(String args[]) throws Exception {
JMSReceiver re = new JMSReceiver();
re.receiveJMS();
}
public void receiveJMS() throws NamingException, JMSException {
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_BROKER_URL);
Connection connection = connectionFactory.createConnection();
connection.start();
Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
// Getting the queue 'testQueue'
Destination destination = session.createQueue("testQueue");
MessageConsumer consumer = session.createConsumer(destination);
// set an asynchronous message listener
JMSReceiver asyncReceiver = new JMSReceiver();
consumer.setMessageListener(asyncReceiver);
connection.setExceptionListener(asyncReceiver);
}
@Override
public void onMessage(Message message) {
System.out.println("Received message : " +message);
}
}
【问题讨论】:
-
您是否尝试从您的消费者中删除
connection.close()? -
感谢您的宝贵时间。请检查我的更新
-
因为它是 java 程序,它应该在 jvm (java.exe) 中运行。可能是在像 tomcat 这样的服务器中运行您的消费者或作为主线程运行。