Ich möchte mit JMS eine Verbindung zu IBM MQ herstellen. Wie gebe ich den Warteschlangenmanager, den Kanal und andere Eigenschaften an?Verwenden von JMS zum Herstellen einer Verbindung mit IBM MQ
Antwort
JNDI für connection/Destinationen Lookups die InitialContext
mit folgenden Eigenschaften bereitzustellen:
java.naming.provider.url=<ip>:<port, default is 1414>/<channel name, default channel is SYSTEM.DEF.SVRCONN>
java.naming.factory.initial=com.ibm.mq.jms.context.WMQInitialContextFactory
java.naming.security.authentication=none
java.naming.security.credentials=
java.naming.security.principal=
wurde unter Verwendung (Websphere Application Server) Warteschlangen, würden die Eigenschaften wie folgt:
java.naming.provider.url=iiop://<ip>:<port, the defualt is 2809>
java.naming.factory.initial=com.ibm.websphere.naming.WsnInitialContextFactory
java.naming.security.authentication=none
java.naming.security.credentials=
java.naming.security.principal=
Der Rest würde wie folgt aussehen:
Properties config = new Properties();
config.load(new FileInputStream("connectionConfig.properties"));// this file would contain the properties above
InitialContext context = new InitialContext(config);
ConnectionFactory factory = (ConnectionFactory) context.lookup("ConnectionFactory");// connection factory name
Destination destination = (Destination) context.lookup("destination");// queue/topic name
Der beste Weg ist, die Befehlszeile zu verwenden. Es macht viel Spaß. Sie können das Befehlsreferenzbuch von http://publib.boulder.ibm.com/iseries/v5r2/ic2924/books/csqzaj05.pdf
herunterladen Wenn Ihr MQ-Server auf einem Windows-Computer ausgeführt wird, können Sie optional einen MQExplorer verwenden und grafisch konfigurieren.
Hier a tutorial, die helfen können:
auch sicher, dass Sie die Dokumentation für die richtige Version von WMQ zu verwenden. V7.0 ist aktuell und v6.0 unterstützt bis September 2011. Je nachdem, was Sie verwenden, sehen Sie die Verwendung von Java-Handbuch für die richtige Version:
Mit IBM Client-API
import com.ibm.mq.MQEnvironment;
import com.ibm.mq.MQQueue;
import com.ibm.mq.MQQueueManager;
import com.ibm.mq.constants.CMQC;
public class QueueMonitoring {
public static void main(String[] args) {
int openOptions = CMQC.MQOO_INQUIRE | CMQC.MQOO_INPUT_AS_Q_DEF;
MQEnvironment.hostname = "192.168.59.103";
MQEnvironment.port = 1414;
MQEnvironment.channel = "SYSTEM.DEF.SVRCONN";
MQEnvironment.properties.put(CMQC.TRANSPORT_PROPERTY,CMQC.TRANSPORT_MQSERIES);
MQQueueManager qMgr;
try {
qMgr = new MQQueueManager("QM1");
MQQueue destQueue = qMgr.accessQueue("DOCKERQ", openOptions);
System.out.println("Queue size:" + destQueue.getCurrentDepth());
destQueue.close();
qMgr.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Sie benötigen einen MQQueueConnectionFactory Bohne und die gewünschten Eigenschaften in ihm zu schaffen.
<bean id="queueConnectionFactory" class="com.ibm.mq.jms.MQQueueConnectionFactory">
<property name="transportType" ref="transport" />
<property name="queueManager" value="queueManagerName" />
<property name="hostName" value="hostName" />
<property name="port" value="portNumber" />
<property name="channel" value="channelName" />
</bean>
<bean id="transport"
class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean">
<property name="staticField">
<value>
com.ibm.mq.jms.JMSC.MQJMS_TP_CLIENT_MQ_TCPIP
</value>
</property>
</bean>
Ich kann nicht finden, wo jeder com.ibm.websphere.naming.WsnInitialContextFactory, helfen –