Java client à l'écoute de WebSphere MQ Server?
J'ai besoin d'écrire un client Java écoute de WebSphere MQ Server. Le Message est mis dans une file d'attente dans le serveur.
J'ai développé ce code, mais je ne suis pas sûr que c'est correct ou pas. Si elle est correcte, alors comment puis-je le tester?
C'est un projet de Java autonome, pas de serveur d'application support. Qui les pots, je devrais mettre dans le classpath?
J'ai la MQ paramètres, où je dois mettre dans mes codes? Standard JMS pouvez ignorer ces paramètres? source de confusion ....
import javax.jms.Destination;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueReceiver;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public class Main {
Context jndiContext = null;
QueueConnectionFactory queueConnectionFactory = null;
QueueConnection queueConnection = null;
QueueSession queueSession = null;
Queue controlQueue = null;
QueueReceiver queueReceiver = null;
private String queueSubject = "";
private void start() {
try {
queueConnection.start();
queueSession = queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
Destination destination = queueSession.createQueue(queueSubject);
MessageConsumer consumer = queueSession.createConsumer(destination);
consumer.setMessageListener(new MyListener());
} catch (Exception e) {
e.printStackTrace();
}
}
private void close() {
try {
queueSession.close();
queueConnection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
private void init() {
try {
jndiContext = new InitialContext();
queueConnectionFactory = (QueueConnectionFactory) this.jndiLookup("QueueConnectionFactory");
queueConnection = queueConnectionFactory.createQueueConnection();
queueConnection.start();
} catch (Exception e) {
System.err.println("Could not create JNDI API " + "context: " + e.toString());
System.exit(1);
}
}
private class MyListener implements MessageListener {
@Override
public void onMessage(Message message) {
System.out.println("get message:" + message);
}
}
private Object jndiLookup(String name) throws NamingException {
Object obj = null;
if (jndiContext == null) {
try {
jndiContext = new InitialContext();
} catch (NamingException e) {
System.err.println("Could not create JNDI API " + "context: " + e.toString());
throw e;
}
}
try {
obj = jndiContext.lookup(name);
} catch (NamingException e) {
System.err.println("JNDI API lookup failed: " + e.toString());
throw e;
}
return obj;
}
public Main() {
}
public static void main(String[] args) {
new Main();
}
}
MQ paramètre File d'attente
<queue-manager>
<name>AAA</name>
<port>1423</port>
<hostname>ddd</hostname>
<clientChannel>EEE.CLIENTS.00</clientChannel>
<securityClass>PKIJCExit</securityClass>
<transportType>1</transportType>
<targetClientMatching>1</targetClientMatching>
</queue-manager>
<queues>
<queue-details id="queue-1">
<name>GGGG.NY.00</name>
<transacted>false</transacted>
<acknowledgeMode>1</acknowledgeMode>
<targetClient>1</targetClient>
</queue-details>
</queues>
OriginalL'auteur user595234 | 2011-12-06
Vous devez vous connecter pour publier un commentaire.
Il y a un article avec des exemples de code L'exécution d'une application Java autonome sur WebSphere MQ V6.0 qui vous guide à travers la plupart de vos questions, y compris la façon dont vous pouvez faire le test avec un gratuit WMQ d'essai de l'installer. La principale différence (comme indiqué dans les commentaires) à v7 ou v7.1 c'est qu'il n'y a pas de courtier composant de départ si vous souhaitez utiliser des sujets. Autres que que, l'article devrait bien fonctionner avec le courant WMQ client et/ou serveur.
En outre, veuillez vous référer à la WebSphere MQ à l'Aide de Java manuel (v7.0 client) ou le À l'aide de WebSphere MQ Classes Java manuel (v7.1 client) pour le
CLASSPATH
et d'autres paramètres de votre client. N'oubliez pas d'utiliser l'Infocenter appropriée à votre version du client et non pas à la version du serveur. Vous pouvez mélanger et assortir le client et le serveur version mais vous obtenez seulement les fonctionnalités prises en charge par le serveur. Par exemple, à l'aide de la WMQ v7.1 client avec le WMQ v7.0 serveur est parfaitement valide.Enfin, il y a un certain nombre d'exemples de programmes fournis avec le client libre téléchargement qui font exactement ce que vous décrivez. Certains utiliser JNDI pour la recherche de l'WMQ ressources, d'autres utilisent des méthodes de Java et peuvent être remplis avec Java standard de la propriété des fichiers. Ceux avec un
-nojndi
option montre comment initialiser votre WMQ objets dans le code au moment de l'exécution. Ces derniers sont sous la...dans le dernier client Windows installer (SupportPac MQC71). Vous pouvez également utiliser la v7.0 client (SupportPac MQC7). Je vous conseille d'utiliser les échantillons pour commencer, plutôt que de commencer à partir de zéro. Pourquoi réinventer la roue, non?
En plus des nombreux exemples de programmes, le vendeur installer inclut tous les fichiers jar requis. Notez que ce qui va dans le
CLASSPATH
changements par WMQ version du client afin de consulter l'info center. Les versions les plus récentes sont beaucoup plus simples et ne nécessitent qu'un couple de fichiers jar dans leCLASSPATH
.Si vous voulez télécharger le WMQ procès pour le test et n'ont pas de droits d'Administrateur sur votre poste de travail Windows, vous pouvez l'installer facilement sur une RedHat ou SUSE machine virtuelle. Avec un peu de massage, vous pouvez facilement l'installer sur Ubuntu comme décrit dans un Andy Piper post de blog.
OriginalL'auteur T.Rob
Si vous avez la possibilité, je vous recommande de vous présenter le Framework Spring pour gérer la JMS de la communication. De cette façon, il vous suffit d'écrire votre logique métier et peuvent laisser la gestion d'erreur jusqu'au Printemps.
Printemps JMS
Télécharger la dernière Le printemps des POTS et de regarder la configuration d'un DefaultMessageListenerContainer pour votre application. Vous devez ensuite écrire votre propre POJO (plain old java object) avec un
onMessage()
événement qui est appelée à chaque fois qu'un nouveau message arrive.J'ai trouvé ce tutoriel que vous pourriez trouver utile de commencer avec
OriginalL'auteur Brad
Il y a un petit client de l'application que j'ai développé dans JavaFx2 pour windows et Mac osx. Il est disponible sur source forge (https://sourceforge.net/projects/mqconsole).
Vous pouvez voir un exemple de l'écoute d'une file d'attente pour les nouveaux messages.
Le programme dresse la liste des files d'attente, les messages dans chaque file d'attente, pour afficher les détails du message et envoyer un message à une file d'attente et d'écouter la réponse.
Vous pouvez vérifier le code, l'utiliser et l'améliorer.
OriginalL'auteur Martins