Подключение к мэйнфреймам с использованием JMS - PullRequest
2 голосов
/ 03 февраля 2009

В настоящее время мы используем WebSphere MQ для извлечения данных с мэйнфреймов и иногда сталкиваемся с проблемами на стороне MQ.

Я хотел бы знать, есть ли способ обойти MQ и использовать вместо этого JMS для получения данных с мэйнфреймов. Мы используем WebSphere Application Server 6.0.2.

Ответы [ 3 ]

3 голосов
/ 03 февраля 2009

Извините, но JMS является только интерфейсом драйвера, а не администратором очередей.

Между JMS и администратором очередей есть такая же разница, как между JDBC и базой данных.

ТОО, Андреа

1 голос
/ 04 февраля 2009

Конечно, вы можете использовать JMS на стороне java, что в итоге приведет к оборачиванию вызовов в MQ. Вы просто должны быть осторожны с заголовками сообщений. Замена MQ другой инфраструктурой обмена сообщениями зависит от того, с чем может взаимодействовать мэйнфрейм, поскольку я полагаю, что у вас мало контроля над этим, верно? MQ часто выбирают из-за его поддержки мэйнфреймовыми системами IBM.

Грег

0 голосов
/ 26 октября 2017

Пожалуйста, найдите логику,

  1. Мы должны установить соединение с сервером, используя ConnectionFactory, Connection и Session

  2. Нам нужно создать ссылку на очередь, используя очередь

  3. Необходимо создать объект для сообщения, которое мы планируем отправить в очередь с помощью TextMessage

  4. Мы должны создать объекты для взаимодействия с очередью. Здесь 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();
...