Comment puis-je m'abonner programme Java en tant que consommateur, Activemq?
Je veux mettre en œuvre Pub/Sub
de domaine dans le projet.Fondamentalement, je ne suis pas un développeur java,à l'aide de google vous aider.J'ai lu ce Lien.
J'ai commencé à mettre en œuvre la structure suivante.
J'ai écrit en Java nom de l'Application que MessageConsumer.java
pour recevoir des messages de AMQ courtier et placé dans le Serveur 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
}
}
}
Séparément, j'ai écrit une autre Application Java pour le traitement des messages(MyListener.java).
MyListener.java code :
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();
}
}}
À la fois les Applications Java sont dans le serveur web(Apache, Tomcat).jusqu'à présent, nous suivent de la manière suivante.
- Avant d'envoyer des messages au Sujet,nous sommes déclenchement MessageConsumer.java par le biais de l'adresse HTTP du navigateur.
Droit de savoir, ce que nous essayons.Initialement, nous ne voulons pas de déclenchement MessageConsumer.java
.
Moyens,Supposons MessageConsumer.java
est dans le Serveur web. D'abord Si AMQ un message à partir de n'importe où, notre MessageConsumer.java devrait être le processus de leur propre logique.
Je l'espère, vous les gars à comprendre ce que Nous essayons.
Je n'ai jamais travailler sur Apache Camel
, pouvez-vous expliquer clairement.
Grâce.
Pourquoi n'Est-il pas clair.
OriginalL'auteur Hanumath | 2013-09-07
Vous devez vous connecter pour publier un commentaire.
pourquoi vous voulez déclencher
MessageConsumer
.java manuellement que l'invocation deSubscriber
est de la responsabilité exclusive de ActiveMQ dans votre cas.De votre sujet de publier votre message à ActiveMQ serveur et tous les abonnés qui ont souscrit à ce sujet va obtenir votre message sans déclencher manuellement.
reportez-vous à ce que votre initiale POC
http://activemq.apache.org/hello-world.html
.Vous pouvez utiliser au-dessous de code java pour s'abonner à un sujet pour client2 et client3
OriginalL'auteur Alpesh Gediya
Avez-vous vérifier Apache Camel?
http://camel.apache.org/
Vous pouvez définir des itinéraires de chameau à publier et s'abonner à des sujets sur un courtier à partir du code java (intégration avec le printemps, les haricots par exemple). Il y a de nombreux exemples, y compris l'interaction avec un activemq message broker.
Apache Camel Api
. J'ai écrit en java nom de l'Application que MessageConsumer.java pour recevoir des messages de AMQ à l'aide deonMessage()
. Si vous voulez voir mon code, je vais poster. pouvez-vous m'aider,à l'Aide deApache Camel
Comment vais-je m'abonner à AMQ sans déclencher via HTTP.- Je modifier ma question, pouvez-vous vérifier une fois.
OriginalL'auteur zenbeni