我们目前正在使用WebSphere MQ从大型机获取数据,有时还面临MQ方面的问题。
我想知道是否存在绕过MQ并使用JMS代替从大型机获取数据的方法。我们使用WebSphere Application Server 6.0.2。
答案 0 :(得分:3)
很抱歉,JMS只是一个驱动程序接口,而不是队列管理器实现。
在JMS和队列管理器之间,与JDBC和数据库之间存在相同的区别。
LLP,Andrea
答案 1 :(得分:1)
当然,您可以在java端使用JMS,这将最终包装对MQ的调用。您只需要小心邮件标题。 将MQ替换为另一个消息传递基础架构取决于大型机可以与之通信的内容,因为我认为您对此没有多少控制权,对吧?通常选择MQ是因为它得到了IBM大型机系统的支持。
格雷格
答案 2 :(得分:0)
请找到逻辑,
我们必须使用建立与服务器的连接 ConnectionFactory,连接和会话
我们需要使用Queue
需要为我们计划使用TextMessage发送到队列的Message创建一个对象
我们必须创建与Queue交互的对象。这里,MessageProducer用于发送我们在步骤3创建的消息,MessageConsumer用于接收响应
请查看以下实施代码,
//Instantiate a Sun Java(tm) System Message Queue ConnectionFactory
ConnectionFactory myConnFactory = new com.sun.messaging.ConnectionFactory();
String h = "HOSTNAME";
String p = "PORTNO";
// Set imqAddressList property
((com.sun.messaging.ConnectionFactory)myConnFactory).setProperty(
com.sun.messaging.ConnectionConfiguration.imqAddressList,
new StringBuffer().append("mq://").append(h).append(":").append(p).append("/jms").toString());
//Create a connection to the Sun Java(tm) System Message Queue Message Service.
Connection myConn = myConnFactory.createConnection();
//Start the Connection created in step 3.
myConn.start();
//Create a session within the connection.
Session mySess = myConn.createSession(false, Session.AUTO_ACKNOWLEDGE);
//Instantiate a Sun Java(tm) System Message Queue Destination administered object.
Queue myQueue = new com.sun.messaging.Queue("<MODULENAME>");
//Create a message producer.
MessageProducer myMsgProducer = mySess.createProducer(myQueue);
//Create and send a message to the queue.
TextMessage myTextMsg = mySess.createTextMessage();
myTextMsg.setText("<message>");
System.out.println("Sending Message: " + myTextMsg.getText());
myMsgProducer.send(myTextMsg);
//Create a message consumer.
MessageConsumer myMsgConsumer = mySess.createConsumer(myQueue);
//Start the Connection created in step 3.
myConn.start();
//Receive a message from the queue.
Message msg = myMsgConsumer.receive();
//Retreive the contents of the message.
if (msg instanceof TextMessage) {
TextMessage txtMsg = (TextMessage) msg;
System.out.println("Read Message: " + txtMsg.getText());
}
//Close the session and connection resources.
mySess.close();
myConn.close();