Java-client-listening-WebSphere MQ-Server?
Schreiben brauche ich einen Java-client hören WebSphere MQ Server. Nachricht in einer Warteschlange auf dem server.
Entwickelte ich diesen code, aber ich bin mir nicht sicher, ob es richtig ist oder nicht. Wenn das stimmt, dann wie kann ich es testen?
Dies ist eine standalone-Java-Projekt, kein application-server-Unterstützung. Welche Gläser sollte ich in classpath?
Ich habe die MQ-Einstellungen, wo ich in meinem Code? Standard JMS überspringen können diese Einstellungen? verwirrend ....
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-Queue-Einstellung
<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>
InformationsquelleAutor user595234 | 2011-12-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es einen Artikel mit Beispiel-code Läuft ein standalone-Java-Anwendung auf WebSphere MQ V6.0, die führt Sie durch die meisten Ihrer Fragen, darunter, wie könnte man testen mit einem kostenlosen ein Fehler in WMQ-Testversion installieren. Der wesentliche Unterschied (wie bereits in den Kommentaren) zu v7 oder v7.1 ist, dass es keine broker-Komponente zu starten, wenn Sie verwenden möchten Themen. Andere als, dass, der Artikel sollte gut funktionieren mit der aktuellen ein Fehler in WMQ client und/oder server.
Darüber hinaus finden Sie auf der WebSphere MQ Mit Java Handbuch (v7.0-client) oder das Mithilfe von WebSphere MQ Classes for Java Handbuch (v7.1 client) für die entsprechenden
CLASSPATH
und andere Einstellungen für Ihren client. Denken Sie daran, verwenden Sie das Infocenter entsprechende client-version und nicht die server version. Sie können mix and match-client-und server-version, aber Sie erhalten nur die Funktionen, die vom server unterstützt wird. Zum Beispiel, mit dem ein Fehler in WMQ v7.1 client, mit dem ein Fehler in WMQ v7.0 server ist vollkommen gültig.Schließlich gibt es eine Reihe von Beispielprogrammen im Lieferumfang des kostenlosen client herunterladen, die genau das tun, was Sie beschreiben. Manche benutzen JNDI-lookup das ein Fehler in WMQ Ressourcen, andere nutzen die Java-Methoden und können gefüllt werden mit standard-Java-property-Dateien. Diejenigen, die mit einem
-nojndi
Möglichkeit zeigen, wie Sie zu initialisieren, Ihr ein Fehler in WMQ-Objekte im code zur Laufzeit. Diese sind unter...in der neuesten Windows-client installieren (SupportPac MQC71). Sie können auch mit der v7.0 Kunden (SupportPac MQC7). Ich würde empfehlen, mit den Proben begonnen zu erhalten, anstatt von Grund auf neu beginnen. Warum das Rad neu erfinden, richtig?
Zusätzlich zu den vielen Beispiel-Programme, die Hersteller installieren, enthält alle notwendigen jar-Dateien. Beachten Sie, dass das, was geht in der
CLASSPATH
änderungen durch ein Fehler in WMQ client-version, so finden Sie das Infocenter. Die späteren Versionen sind viel leichter und erfordern nur ein paar jar-Dateien in derCLASSPATH
.Wenn Sie wollen herunterladen ein Fehler in WMQ-Studie für die Prüfung und nicht über Administrator-Rechte auf Ihrer Windows-Arbeitsstation installieren möchten, können Sie es leicht auf einem RedHat-oder SUSE-virtuelle Maschine. Mit ein bisschen massieren, können Sie auch einfach die Installation auf Ubuntu, wie beschrieben, in eine Andy Piper blog-post.
InformationsquelleAutor T.Rob
Wenn du die Möglichkeit hast, würde ich empfehlen, dass Sie sich vorstellen das Spring-Framework zu handhaben, die JMS-Kommunikation. So brauchen Sie nur zu schreiben, Ihre business-Logik und lässt die Fehlerbehandlung bis zum Frühjahr.
Spring JMS
Laden Sie die neueste Spring GLÄSER und Blick auf die Konfiguration einer DefaultMessageListenerContainer für Ihre Anwendung. Dann schreiben Sie Ihre eigenen POJO (plain old java object) mit einem
onMessage()
Ereignis, das aufgerufen wird, wird jedesmal, wenn eine neue Nachricht eintrifft.Fand ich dieses tutorial, die Sie nützlich finden können, um mit zu beginnen
InformationsquelleAutor Brad
Gibt es einen kleinen client-Anwendung, die ich entwickelt habe in JavaFx2 für windows und Mac osx. Es ist verfügbar auf source forge (https://sourceforge.net/projects/mqconsole).
Sehen Sie ein Beispiel hören eine queue auf neue Nachrichten.
Das Programm listet die Warteschlangen, die Nachrichten in jeder Warteschlange, die details der Nachricht und senden einer Nachricht zu einer queue und hören Sie die Antwort.
Können Sie schauen Sie sich den code, nutzen Sie es und verbessern es.
InformationsquelleAutor Martins