我想编写用于从中提取消息的代码Activemq
。我不想Activemq
一次提取所有消息,因为我的要求是每当我的 Java 应用程序收到来自 1 条消息时Activemq
,根据消息正文,我会找到相应HTTP Link
的并转发到那个关联。对于这整个逻辑,我写了 2 个.java
文件名是
消息消费者.java
MyListener.java
MessageConsumer.java 文件仅用于建立连接。对应的代码如下。
package PackageName;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.jms.*;
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();
System.out.println("Press a key to terminate");
}
catch (Exception e) {
// TODO: handle exception
}
}
}
MyListener.java 文件用于触发相应的 Applications.code 在下面
package PackageName;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
public class MyListener implements MessageListener {
public void onMessage(Message msg) {
try {
TextMessage msg1=(TextMessage)msg;
//just for your understanding I mention dummy code
System.out.println(msg1.getText());
if (msg1.getText()=="Google") {
System.out.println("Forwarding http link to Google");
}
else {
System.out.println("Forwarding http link to Facebook");
}
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
在我的帖子中,我触发了 Google 和 Facebook 链接。但就我的要求而言,我将调用我自己的应用程序。每个应用程序需要 20 多分钟。所以我想一个接一个地提取消息。一旦之前的消息过程完成,那么只有它将收到来自 的另一条消息Activemq
。
但是知道我一次收到所有消息。我该如何解决这个问题。我看过程序。我Activemq-Hellowworld
不明白。
对不起,我是Java
技术新手。谁能帮助我。
谢谢。