Каковы минимальные требования для написания Java-клиента для MQSeries? - PullRequest
2 голосов
/ 27 октября 2009

Мне нужно написать простой клиент MQSeries на Java.

Клиенту просто нужно подключиться к очереди и снять следующее сообщение.

Я делал это раньше несколько лет назад, и у меня есть весь пример кода и т. Д.

Все, что мне запомнилось, - это три файла jar:

  • com.ibm.mq.iiop.jar
  • com.ibm.mq.jar
  • connector.jar

Я немного читал, и многие люди говорят о файле свойств, но я не помню этого из моего прошлого опыта.

И так на мой вопрос:

Какой абсолютный минимум мне нужен в моей системе для разработки, тестирования и окончательного развертывания простого клиента MQSeries?

А где я могу найти (скачать) эти вещи?

ПРИМЕЧАНИЕ. Этот вопрос относится к this one.

, но не совпадает с ним.

Ответы [ 4 ]

3 голосов
/ 30 января 2011

Ответ на вопрос зависит от того, хотите ли вы поместить полученный код в Production. Вы можете взять несколько файлов JAR и включить их в CLASSPATH и заставить его работать. На самом деле с перепаковкой, сделанной в v7, количество банок было уменьшено. Однако он не поддерживается IBM без полной установки клиента.

Почему это? Полная установка включает в себя средства диагностики, вспомогательный код, поддержку NLS и возможность сбора всей информации Must Gather для открытия заявки на устранение неисправности. Если вы захватите только несколько jar-файлов, вы не получите дополнительную функциональность и, следовательно, не получите поддержки от поставщика, если что-то пойдет не так.

Клиент WMQ v7 устанавливается в виде SupportPac MQC7 , который можно загрузить бесплатно.

Файлы jar и настройки CLASSPATH для базовой Java и JMS представлены в руководстве Использование Java .

Используйте клиент v7, даже на сервере v6. Это обратно совместимо. В v7.0 все Java / JMS было переписано, и вам просто нужны jar-файлы, перечисленные в руководстве.

Кроме того, кто-то упомянул банку иклиента. Это расширенный транзакционный клиент, и имейте в виду, что он несет полную стоимость лицензии QMgr. Это необходимо только в том случае, если вы выполняете двухфазную фиксацию (XA с WMQ и другим менеджером ресурсов в той же единице работы) и не используете WebSphere App Server или Message Broker. Например, если вы хотите использовать TPC с использованием JBoss, MQ и базы данных, вам нужен jar-файл etclient и вы платите за полную лицензию WMQ. Если вы не проводите транзакции XA, вам это не нужно.

1 голос
/ 27 октября 2009

Хорошо, похоже, вам нужны три банки, которые я упомянул в вопросе, а также файл свойств.

  • com.ibm.mq.iiop.jar
  • com.ibm.mq.jar
  • connector.jar
  • mqji.properties

Если у вас уже нет доступа к этим вещам, единственным способом, которым я мог бы их получить, было загрузить и установить ПОЛНУЮ пробную версию для MQSeries от IBM:

http://www.ibm.com/developerworks/downloads/ws/wmq/

Если эта ссылка со временем умирает, вы также можете найти ее, просто зайдя на www.ibm.com , а затем следуя меню «Поддержка и загрузка» -> «Загрузить» -> «Испытания демонстрации "и затем выберите" WebSphere MQ "из списка.

После завершения установки у вас есть все необходимые файлы в папке java / lib, расположенной ниже, где произошла установка. Банки в этой версии отличаются от банок, о которых я упоминал выше, я подозреваю из-за различий в версии.

Файл свойств не был установлен при установке (возможно, новым версиям этот файл не нужен), но его можно найти здесь .

1 голос
/ 27 октября 2009

Вот еще один способ ...

Использование трех файлов jar:

com.ibm.mq.jar
com.ibm.mqetclient.jar
com.ibm.mqjms.jar

Вот пример кода, который будет читать сообщение MQ -

import com.ibm.mq.*;            // Include the WebSphere MQ classes for Java package

public class MQSample
{
  private String qManager = "your_Q_manager";  // define name of queue
                                               // manager to connect to.
  private MQQueueManager qMgr;                 // define a queue manager
                                               // object
  public static void main(String args[]) {
     new MQSample();
  }

  public MQSample() {
   try {

      // Create a connection to the queue manager
      qMgr = new MQQueueManager(qManager);

      // Set up the options on the queue we wish to open...
      // Note. All WebSphere MQ Options are prefixed with MQC in Java.
      int openOptions = MQC.MQOO_INPUT_AS_Q_DEF |
                        MQC.MQOO_OUTPUT ;

      // Now specify the queue that we wish to open,
      // and the open options...
      MQQueue system_default_local_queue =
              qMgr.accessQueue("SYSTEM.DEFAULT.LOCAL.QUEUE",
                               openOptions);

      // Define a WebSphere MQ message buffer to receive the message into..
      MQMessage retrievedMessage = new MQMessage();

      // Set the get message options...
      MQGetMessageOptions gmo = new MQGetMessageOptions(); // accept the defaults
                                                           // same as  MQGMO_DEFAULT
      // get the message off the queue...
      system_default_local_queue.get(retrievedMessage, gmo);

      // And prove we have the message by displaying the UTF message text
      String msgText = retrievedMessage.readUTF();
      System.out.println("The message is: " + msgText);
      // Close the queue...
      system_default_local_queue.close();
      // Disconnect from the queue manager

      qMgr.disconnect();
    }
      // If an error has occurred in the above, try to identify what went wrong
      // Was it a WebSphere MQ error?
    catch (MQException ex)
    {
      System.out.println("A WebSphere MQ error occurred : Completion code " +
                         ex.completionCode + " Reason code " + ex.reasonCode);
    }
      // Was it a Java buffer space error?
    catch (java.io.IOException ex)
    {
      System.out.println("An error occurred whilst writing to the message buffer: " + ex);
    }
  }
} // end of sample

Код взят из этого SO ответа .

0 голосов
/ 27 октября 2009

Прошло много времени с тех пор, как я это сделал, IBM предоставляет java api для непосредственного использования mqseries и JMS api, что является оберткой вокруг него.

Зайдите сюда, у них много примеров в java http://www304.ibm.com/jct01005c/isv/tech/sampmq.html

Для тестирования вам потребуется загрузить и настроить сервер MQseries, или, возможно, они будут достаточно любезны, чтобы настроить тестовую очередь на реальном сервере.

В любом случае, когда вы загружаете сервер MQseries с веб-сайта IBM (пробная лицензия), который должен содержать необходимые вам банки.

Я бы тщательно изучил API-интерфейс JMS для MQSeries, чтобы вы могли избежать использования API-интерфейса mqseries.

...