からメッセージをプルするためのコードを書きたいと思います。一度にActivemq
すべてのメッセージをプルしたくありません。Activemq
私の要件は、Java アプリケーションが から 1 つのメッセージを受信するたびに、Activemq
メッセージ本文に基づいて対応するものを見つけHTTP Link
て転送することだからです。リンク。このロジック全体について、2 つ.java
のファイル名を書きました。
MessageConsumer.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 分以上かかります。したがって、メッセージを 1 つずつプルしたいと思います。前のメッセージ プロセスが完了したら、それだけです。は から別のメッセージを受け取りますActivemq
。
しかし、私は一度にすべてのメッセージを受け取っていることを知っています.どうすればこれを修正できますか.私はプログラムを見ました.私Activemq-Hellowworld
は理解できませんでした.
申し訳ありませんが、私はJava
テクノロジーに不慣れです。誰か助けてください。
ありがとう。