【发布时间】:2013-08-10 06:54:22
【问题描述】:
开发人员您好,
我想写 2 个.java 文件,使用JMS 库名称是MessageProducer 和MessageConsumer。
我在lib 文件夹中添加了activemq-all-5.8.0.jar 和commons-io-2.4.jar 文件。我将Activemq 的端口号从61616 更改为61617。
使用MessageProducer.java 文件,我将向Activemq 发送消息。为此,我编写了代码,它工作正常。如果您想查看,请单击此Link。
我想从Activemq 向MessageConsumer.java 发送消息。这是应用程序在Apache Tomcat(http://localhost:8080/ExecutableFileProcess/MessageConsumer)
一旦MessageConsumer 收到消息,它会将消息正文与消息分开,并仅在控制台上打印(仅用于我的测试)。为此,我编写了以下 2 个java 文件。但它不起作用。
MessageConsumer.java:
package PackageName;
import java.io.IOException;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.MessageListener;
import javax.jms.Queue;
import javax.jms.Session;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.activemq.ActiveMQConnectionFactory;
public class MessageConsumer extends HttpServlet {
@Override
protected void service(HttpServletRequest arg0, HttpServletResponse arg1)
throws ServletException, IOException {
try {
//creating connectionfactory object for way
ConnectionFactory connectionFactory=new ActiveMQConnectionFactory("admin","admin","tcp://localhost:61617");
//establishing the connection b/w this Application and Activemq
Connection connection=connectionFactory.createConnection();
Session session=connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Queue queue=session.createQueue("MessageTesing");
javax.jms.MessageConsumer consumer=session.createConsumer(queue);
//fetching queues from Activemq
MessageListener listener = new MyListener();
consumer.setMessageListener(listener);
connection.start();
} catch (Exception e) {
// TODO: handle exception
}
}
}
MyListener.java:
package PackageName;
import javax.jms.Message;
import javax.jms.MessageListener;
public class MyListener implements MessageListener {
public void onMessage(Message msg) {
System.out.println(msg);
}
};
我没有在Activemq console 中为队列配置目的地,也没有在从MessageProducer.java 发送消息时提及“目的地”。
我正在使用Eclipse。如何在控制台中打印messagebody,实际上基于messagebody我会在我的MessageConsumer.java中进行一些操作。但是对于我的测试我需要查看messagebody。
我希望,你明白我在尝试什么。
我是JMS和Java的新手,你能解释清楚吗?到目前为止我用谷歌搜索写了代码。但是我没有找到这个问题。
谁能推荐我。
谢谢。
【问题讨论】:
-
嗨,亲爱的,请看这个问题。我非常需要这个。 stackoverflow.com/questions/19706788/…
标签: java jms activemq java-ee-6