プロジェクトにドメインを実装したい.基本的に私はGoogleヘルプを使用してJava開発者ではありませPub/Sub
ん. 私は次の構造を実装し始めました。
AMQブローカーからのメッセージを受信するためのJavaアプリケーション名を書きMessageConsumer.java
、Webサーバー(Apache Tomcat)に配置しました。
MessageConsumercode:
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 Consumer 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);
Topic queue=session.createTopic("MessageTesting");
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
}
}
}
別途、メッセージを処理するための別の Java アプリケーション (MyListener.java) を作成しました。
MyListener.java コード:
package PackageName;
import java.io.*;
import java.net.*;
import javax.jms.*;
public class MyListener implements MessageListener {
public void onMessage(Message msg) {
TextMessage msg1=(TextMessage)msg;
//just for your understanding I mention dummy code
//System.out.println(msg1.getText());
MyListener ml=new MyListener();
try {
ml.executeHttp("http://localhost:8080/ExecutableFileProcess/ClassName");
System.out.println(msg1.getText());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}}
両方の Java アプリケーションは Web サーバー (Apache Tomcat) にあります。これまでのところ、次の方法に従っています。
- トピックにメッセージを送信する前に、ブラウザーで HTTP を介して MessageConsumer.java をトリガーしています。
何をしようとしているのかはわかります。最初は、 をトリガーしたくありませんMessageConsumer.java
。
つまり、Webサーバーにあると仮定MessageConsumer.java
します。最初に AMQ がどこからでもメッセージを取得する場合、MessageConsumer.java は独自のロジックを処理する必要があります。
皆さん、私たちが何をしようとしているのか理解していただければ幸いです。
に取り組んだことはありませんApache Camel
。明確に説明していただけますか。
ありがとう。