Websphere MQ Basics Tutorial
Below we will try to understand the basic behaviour of MQ objects and their behaviour for message exchange.
Let’s assume, we have a requirement where,
“A java based application is generating few messages and those messages are to be consumed by C based application.”
To fulfill the above requirement, we need to setup below component from MQ End.
1. Queue Manager
3. A message putting application(put functionality)
4. A message consuming application(get functionality)
Assumptions:
1. We have installed the MQ software on Windows/Linux platform. Please follow MQ Installation for setting up the environment.
2. We have also logged in as MQ administrator, so we don’t need any further permission at queue & queue manager level. To understand more about permissions click MQ Authorizations.
Let’s understand basic components of MQ Setup,
Queue Manager:
Queue Manager is an MQ object.
This is the first and foremost component to be created after MQ installation. It manages the MQ objects and their behaviour.
It also supports applications, which are trying to put and get the messages.
Local Queue:
Local queue can be created after the queue manager is brought into running state.
Local queue holds the application messages till the receiving end program consumes them. We will understand more about it in further sections.
Put Application:
Put Application is a program which puts the message into a queue. This could be written in any programming language or a proprietary application.
Here, we are using MQ Explorer for putting the messages into the queue. MQ explorer is a Java based application developed on eclipse platform. It has the wide range options for administering and working with the MQ objects.
Note:
Instead of MQ explorer, we can also use “amqsput” c program for putting the messages into the queue. This is installed by default with MQ software installation.
Get Application:
Get Application is an Application which consumes the messages from a Queue.
Here, we are referring to “amqsget” application which is provided by IBM by default with MQ installation. It is developed in C language.
Steps to create Application-QueueManager-Application setup:
Note:
Here we mostly focus on command line options and we will try to avoid graphical tools while working with MQ objects.
Step:1
Create a queue manager conforming to organization naming standards. For more on naming standards refer to, what are naming standards?
Step:2
After creating a queue manager, check its status using,
dspmq -m DKLHYQM001
Step:3
To bring a queue manager into starting mode. We can’t work with MQ if queue manager is not in running state. So, to start a queue manager
Step:4
Check the queue manager status again. This is to make sure that queue manager is actually in running state.
With the above setup, we have finished the setup of the first component which is queue manager.
Step:5
Now to work with local queue creation,
we have to get into MQSC (MQ Scripting) mode of the queue manager.
runmqsc DKLHYQM001
5724-H72 © Copyright IBM Corp. 1994, 2009. ALL RIGHTS RESERVED.
Starting MQSC for queue manager DKLHYQM001..
Step:6
To define a local queue with default attributes,
1 : DEFINE QLOCAL(KL.JAP1.MAP1.REQ1)
AMQ8006: WebSphere MQ queue created.
Step:7
To check whether queue is created or not and its properties, use “Display” command in runmqsc of queue manager.
The above command displays every property of Websphere MQ local queue. We will be discussing most of these things at different sections of issues.
Step:8
Right now, we want to focus only on, 2 of the queue properties.
Curdepth — -> This will display the number of messages currently available in that particular local queue. This value is dynamic and can’t be altered.
MaxDepth — -> This property will give the maximum number of messages that can be stored in the queue. This value is static and can be changed.
DISPLAY QLOCAL(KL.JAP1.MAP1.REQ1) CURDEPTH MAXDEPTH
2 : DISPLAY QLOCAL(KL.JAP1.MAP1.REQ1) CURDEPTH MAXDEPTH
AMQ8409: Display Queue details.
Remember:
There are no messages and by default max depth of any queue is 5000.
To test above setup follow below steps:
We assume that one had already gone through the “basic MQ setup” and trying to test its functionality.
As you know that we have taken MQ explorer (Java Based Application) for putting the messages into WebSphere MQ queue. MQ Explorer is available for installation on Windows & Linux Platforms only. It’s not there on other flavors of UNIX OS.
Note:
We can also use “amqsput” sample program provided by IBM for putting messages into the queue.
Step :1
Open MQ Explorer as an Administrator
Go to,
All Apps(All programs) → IBM WebSphere MQ → MQ Explorer →Right click on it → choose “Run As Administrator”
We can see MQ Explorer is launched.
Now, go to IBM WebSphere MQ → Queue Managers → click on “Queues”
We can see the list of queue already created within that queue manager.
Step 2:
Right click on Queue name and click on “Put Test Message”
Type a message and click on “Put message” button and message is now pushed to a local queue. It’s that simple.
We can observe current depth increased to “1”, indicating that one message is available in the queue.
We can put any number of messages into the queue and once it is done then click on the “close” button.
For the test, we have placed 3 messages in the queue. We can see that current queue depth is raised to “3”.
Step:3
To get the messages from a Queue with C based Application(amqsget).
amqsget KL.JAP1.MAP1.REQ1 DKLHYQM001
Sample AMQSGET0 start
message < WELCOME TO KNOBLAB >
message < 24900342506712358974368548948 >
message <*%@!@)$%&*($#@!&%*^@%(!%*&# >
no more messages
sample AMQSGET0 end
Step:4
To check curdepth of a Queue after getting Messages from a Queue
DISPLAY QLOCAL(KL.JAP1.MAP1.REQ1) CURDEPTH
1 : DISPLAY QLOCAL(KL.JAP1.MAP1.REQ1) CURDEPTH
AMQ8409: Display Queue details.
QUEUE(KL.JAP1.MAP1.REQ1) TYPE(QLOCAL)
CURDEPTH(0)
We can conclude that a java application and C application are able to exchange information with the help of MQ.
Ibm mq explorer как пользоваться
Рассмотрим порядок установки WebSphere MQ на платформе WindowsNT. Процесс установки построен таким образом, что инсталляцию может выполнить пользователь, никогда ранее не работавший с данным продуктом. WebSphere MQ не является требовательным программным обеспечением (ПО) по отношению к аппаратной части компьютера. Несмотря на это, вряд ли стоит планировать серьезную работу на низко производительных системах. К примеру, для платформы Windows NT вполне достаточно компьютера на базе процессора Pentium IV c тактовой частотой не менее 1000 MHz и ОЗУ 512 Мб. Минимальные и рекомендуемые параметры приведены в Таблице 2.1.
| Характеристика | Минимальные требования | Рекомендуемые требования |
|---|---|---|
| Процессор | Pentium 166 | Pentium IV 1700 MHz |
| Оперативная память | 60 Мб | 1024 Мб |
| Дисковая память | 90 Мб для установки ПО WebSphere MQ | Зависят от количества объектов WebSphere MQ и количества сообщений в очередях. Рекомендуется иметь свободного пространства на диске не менее 2 Гбайт. |
Приведенные цифры касаются требований самого WebSphere MQ и не учитывают потребностей операционной системы. Количество используемой оперативной памяти будет возрастать незначительно с появлением таких новых объектов как очереди, каналы, процессы, но на каждый Trigger Monitor потребуется дополнительно по 3Мбт.
На компьютере для инсталляции WebSphere MQ необходимо установить следующие программные продукты или их более поздние версии:
- Microsoft Internet Explorer 4.01+SP1;
- Microsoft HTML Help 1.3;
- Microsoft MMC 1.1;
- Microsoft Active Directory Client Extensions;
- Microsoft Installer MSI 2.0;
- 128-bit Strength Encryption;
- Supported JAVA Runtime Environment 1.3.
Для начала инсталляции необходимо, в зависимости от комплекта поставки, запустить файл запуска программы установки и следовать инструкциям, появляющимся на экране. После сообщений о подготовке и начале установки должно появиться меню (рис.2.1), в котором нужно последовательно выполнить пункты:
- Software Prerequisites – проверка установки необходимого ПО на компьютере;
- Network Prerequisites – варианты работы с использованием домена или без (рекомендуется не использовать работу в домене, т.е. на вопрос об использовании специального домена ответить «No»);
- WebSphere MQ Installation – собственно, начало инсталляции – необходимо нажать кнопку «Launch WebSphere MQ Installer».
Рис. 2.1. Меню установки WebSphere MQ
После очередного приглашения к началу инсталляции и принятия соглашения о Лицензиях появится меню с выбором вариантов установки Typical, Compact или Custom. Выбираем Typical – наиболее простой и надежный способ установки. При этом установка будет произведена на C:\Program Files\IBM\WebSphere MQ . Возможность изменения каталога и диска установки реализована в способе Custom.
После появления информации о готовности к началу установки появится вопрос о наличии лицензии, на который необходимо ответить «Yes». После этого начнется процесс копирования файлов с инсталляционного диска на ваш компьютер, который закончится сообщением об успешной установке (рис.2.2).
Рис. 2.2. Окончание процесса установки WebSphere MQ
После нажатия на кнопку «Finish» будет предложено сконфигурировать WebSphere MQ для работы в вашей сети или перенести существующие менеджеры очередей, оставшиеся от предыдущей версии. На вопрос об использовании домена следует ответить «No». Экранную форму с предложением об установке параметров по умолчанию рекомендуется пропустить, так как и без этого программа установки успешно завершит работу, а на создании и конфигурации объектов WebSphere MQ мы остановимся подробнее в последующих разделах. После появления последней экранной формы (рис.2.3) и нажатия кнопки «Готово» процесс установки завершается.
Рис. 2.3. Окончание процесса установки и конфигурации WebSphere MQ
В результате установки мы получаем несколько инструментов для работы с WebSphere MQ (рис.2.4):
- First Steps – позволяет запускать различные приложения WebSphere MQ , такие как конфигурация менеджера очередей по умолчанию (Default Configuration); обзор возможностей (Quick Tour); обмен Postcard сообщениями; запуск WebSphere MQ Explorer ; запуск утилиты API-Exerciser, позволяющей детально рассмотреть этапы подключения к менеджеру очередей и создания различных вариантов сообщений и запуска программы-справочника ( Help Center );
- Help Center – справка WebSphere MQ ;
- Prepare WebSphere MQ Wizard – утилита, позволяющая произвести инсталляцию/деинсталляцию WebSphere MQ ;
- WebSphere MQ Explorer – утилита создания и управления объектами WebSphere MQ как на локальных, так и на удаленных менеджерах очередей;
- WebSphere MQ Services — утилита создания и управления сервисами WebSphere MQ .
Рис. 2.4. Основные инструменты работы с WebSphere MQ
Прежде чем перейти к описанию работы с вышеуказанными утилитами рассмотрим процесс деинсталляции WebSphere MQ . Можно отметить, что в ходе многолетней эксплуатации авторам не приходилось производить переустановку WebSphere MQ в системах промышленной эксплуатации, что говорит о высокой надежности работы. Тем не менее предлагается следующий алгоритм переустановки WebSphere MQ :
- Остановить все программы, помещающие сообщения в очереди;
- Остановить все Receiver и Requester каналы, чтобы остановить потоки входящих сообщений;
- Убедиться в отсутствии в очередях сообщений, подлежащих обработке;
- Перевести тип запуска сервиса IBM MQSeries (предыдущая версия данного ПО называлась именно так, и не смотря на то, что устанавливается WebSphere MQ , сервис называется именно IBM MQSeries) из автоматического (Auto) в ручной (Manual);
- Перезагрузить компьютер;
- Произвести удаление программы IBM WebSphere MQ из Панели управления\Установка и удаление программ;
- Удалить папку C:\Program Files\IBM\WebSphere MQ .
- Удалить из переменных окружения ссылки на WebSphere MQ .
- Удалить группу mqm.
Основные утилиты
Рассмотрим подробнее работу основных утилит WebSphere MQ .
First Steps . Главное меню утилиты First Steps представлено на рис.2.5.
Default Configuration . Пункт меню посвящен настройкам по умолчанию. Рассматривать его не будем, так как в дальнейшем дадим подробное описание объектов WebSphere MQ и скажем о параметрах по умолчанию для каждого объекта, а также будет рассмотрен вопрос о том, как задать один раз значение по умолчанию, чтобы все объекты в дальнейшем создавались именно с этим параметром.
Рис. 2.5. Главное меню утилиты First Steps
Quick Tour . Справочная информация о WebSphere MQ , введение, инсталляция/деинсталляция, совместимость, основные утилиты, работа с компонентами WebSphere MQ : менеджеры очередей, кластеры, очереди, каналы и пр.
Postcard . Утилита, позволяющая передавать сообщения между компьютерами, на которых установлено WebSphere MQ . Нужно сразу оговориться, что применима она только для менеджеров очередей, объединенных в кластер, и существует не для промышленной эксплуатации, а скорее для проверки установки соединения. Для передачи сообщения нужно ввести своё имя, далее имя адресата и имя менеджера очередей, куда необходимо передать сообщение. Адресат может прочитать сообщение, также запустив Postcard на своем компьютере. После выхода из Postcard сообщения не сохраняются.
WebSphere MQ Explorer . Основной продукт, позволяющий создавать и модифицировать объекты WebSphere MQ . Внешний вид представлен на рис. 2.6 и являет собой оснастку (snap-in) консоли управления Microsoft.
В левой части можно видеть список менеджеров очередей, доступных для управления и их объекты. В зависимости от позиционирования курсора в левой части на различных объектах, в правой части оснастки будут отображаться списки объектов и их свойства. Кроме этого, в верхней части имеются панели управления и панели инструментов такие как: «Стандартные меню (Действие и Вид)», стандартная панель инструментов и панель инструментов WebSphere MQ . Работа со «Стандартным меню (Действие и Вид) описана во многих справочных руководствах по работе с Microsoft Windows и не представляет особого интереса. Кратко можно сказать, что используя эти меню можно добавлять или удалять различные оснастки для консоли управления и изменять ее вид. В стандартной панели инструментов имеются две кнопки представляющие интерес в части работы с объектами WebSphere MQ . Это кнопка обновления информации и кнопка экспорта списка. Информация, отображающаяся как в левой, так и в правой части WebSphere MQ Explorer статична, т.е. отображает состояние объектов в конкретный момент времени. Для получения текущего состояния объекта необходимо нажать кнопку обновления информации (Refresh). Информация будет обновляться об объекте, на котором позиционирован курсор, то есть если он установлен в левой части на «Queues», то в правой части произойдет обновление информации о состоянии всех очередей, а если курсор будет установлен на одну очередь в правой части WebSphere MQ Explorer , то информация обновится только об этой очереди. С помощью кнопки экспорта списка можно вывести всю информацию об объектах в текстовый файл. Этим удобно пользоваться для анализа состояния объектов менеджера очередей WebSphere MQ , например, легко выяснить, какие каналы используют одну и ту же трансмиссионную очередь и устранить эту «опасную настройку». Используя кнопки панели инструментов WebSphere MQ Explorer можно скрывать или отображать различные типы объектов менеджеров очередей. Например, информация о состоянии временных очередей и системных объектах не так важна и актуальна, и ее можно убрать с экрана или добавить с помощью кнопок
В WebSphere MQ Explorer имеется возможность сортировки списка отображаемых объектов в алфавитном порядке. Для сортировки очередей по названию необходимо нажать на поле «Name». Для сортировки по типу — на поле «Queue Type», по количеству сообщений – на «Current Depth» и так далее. Повторное нажатие на данные поля приведет к рекурсивному (обратному) отображению, то есть, если повторно нажать на поле «Name», то список очередей будет построен в порядке обратном алфавитному.
С помощью WebSphere MQ Explorer можно создавать, модифицировать, удалять и управлять объектами менеджеров очередей. Вызвав контекстное меню для каждой группы или для одного объекта с помощью правой кнопки мыши, мы получим набор команд, характерных для каждого конкретного объекта. Для очередей это могут быть команды создания, изменения свойств, добавление очереди в кластер, помещения тестовых сообщений, просмотр статуса очереди или первых двухсот сообщений очереди, удаления всех сообщений из очереди и удаления самой очереди. Для каналов соответственно команды создания, удаления, модификации и остановки, инициализации и старта. Для процессов – создания, модификации и удаления. Команд на старт или остановку процессов не существует, так как процессы стартуют по определенным правилам, о которых будет сказано ниже.
Для подключения к удаленному менеджеру очередей необходимо вызвать контекстное меню из группы «Queue Managers» и выполнить пункт «Show Queue Manager. ». В появившейся форме выставить флажок «Show a remote queue manager» и заполнить поля «Queue Manager Name» (имя удаленного менеджера) и «Connection Name» — IP адрес или имя компьютера с указанием в скобках номера порта для службы Listener (по умолчанию 1414 ). Подключение к менеджеру возможно в том случае, если пользователь обладает соответствующими правами на удаленном компьютере.
Рис. 2.6. WebSphere MQ Explorer
Подробные действия для создания и управления объектами WebSphere MQ как с помощью WebSphere MQ Explorer , так и с помощью команд MQSC (MQSeries commands) будет рассмотрено ниже.
API Exerciser . Утилита, позволяющая пошагово выполнять действия, связанные с обработкой сообщений в существующих очередях. Выполняя каждый шаг (подключение к менеджеру, открытие очереди, помещение или считывание сообщения из очереди, закрытие очереди и отключение от менеджера) вы имеете возможность видеть результаты работы той или иной команды в окне статуса, что позволяет избежать ошибок. Кроме этого имеется расширенный режим работы для формирования сообщений сложных форматов.
Help Center . Данный пункт меню вызывает справочную систему WebSphere MQ , в которой имеется глоссарий и возможность поиска информации по ключевым словам.
Менеджер очередей
Менеджер очередей – совокупность объектов WebSphere MQ (различных видов очередей, каналов, процессов, сервисов или служб). Он осуществляет контроль и управление всеми его объектами и обрабатывает поступающие запросы от прикладных программ.
Для создания любого объекта WebSphere MQ , и менеджера очередей в частности, существует два основных способа: на основе команд и графический, работающий в среде Windows. Создание объектов и работа с ними на основе команд является универсальным способом, работающим на различных платформах с одним и тем же синтаксисом этих команд. Поэтому создание менеджера очередей рассмотрим прежде всего с помощью команды crtmqm .
Итак, для платформы NT необходимо ввести в командной строке:
/u или -u – опция, говорящая о том, что далее будет создана очередь недоставленных сообщений (подробнее см. лекцию 7);
DEAD_LETTER – имя очереди недоставленных сообщений;
QM_Win2000 – имя менеджера очередей.
Подробное описание утилиты runmqsc и работы с основными командами MQSC будет рассмотрено ниже. Имя менеджера очередей не является уникальным в пределах сети, но на одном компьютере не может быть двух менеджеров с одинаковым именем.
Для платформы UNIX синтаксис команды выглядит следующим образом:
Данная команда, как и опция –u должна быть введена в нижнем регистре и именно со знаком «-» ( -U работать не будет).
Также для успешного создания/изменения любого объекта необходимо обладать соответствующими правами. Так, например, WindowsNT пользователь, от имени которого вводится команда, должен быть членом группы mqm . Подробнее о вопросах авторизации см. в лекции 5.
Полный синтаксис команды crtmqm имеет вид:
Опции команды crtmqm означают следующее.
–c Text — Описание (description) или комментарий, можно ввести до 64 символов.
–d DefaultTransmissionQueue — Транспортная (transmission) очередь по умолчанию. В эту очередь будут попадать сообщения, для которых значение Transmission Queue явно не определено и это имеет свой смысл. При возникновении данной ситуации выгоднее получить сформировавшееся сообщение в DEAD_LETTER , так как имеется ряд способов извлечения или повторной отправки сообщений из DEAD_LETTER по назначению.
–h MaximumHandleLimit — Максимальное количество открытых объектов (командой MQOPEN ). Значение может быть в пределах от 1 до 999 999 999, по умолчанию 256 (если не планируется работа одного приложения с более чем 256 объектами на одном менеджере, а авторы настоятельно не рекомендуют этого делать за исключением работы с distribution list, то следует оставить значение по умолчанию, т.е. 256);
–lc — Используется «круговое» логирование. При этом восстановление состояния менеджера очередей в определенный период невозможно, то есть если «упал» сервер, то сохраняются только те объекты и сообщения, которые существовали в момент «падения».
Данное значение ( lc ) используется по умолчанию.
–ll — Используется «линейное» логирование. При данном типе логирования возможно восстановление данных. Указав тип логирования при создании менеджера в дальнейшем нельзя его изменить.
–ld LogPath — Указывается путь, где будут создаваться файлы логирования. Для UNIX по умолчанию это var/mqm/log . Пользователь и группа mqm должны иметь соответствующие права в этом каталоге. Соответственно, при изменении пути необходимо также предоставить соответствующие права для вышеуказанных пользователей.
Для NT по умолчанию – C:\Program Files\IBM\WebSphere MQ\log
–lf LogFileSize — Размер файла логирования. Файл будет создан с размером в 4 раза большим указанного числа. Значение может быть в диапазоне между 32 и 4095 для NT, OS/2 Warp и между 64 и 16384 для UNIX. Значение по умолчанию для NT и OS/2 Warp равно 256 для UNIX – 1024.
–lp LogPrimaryFiles — Количество первичных файлов логирования. Может быть в пределах от 2 до 62. Значение по умолчанию – 3.
–ls LogSecondaryFiles — Количество вторичных файлов логирования. Может быть в пределах от 1 до 61. Значение по умолчанию – 2.
Следует соизмерять размеры файлов с возможностями операционных систем.
–q — Если указана опция –q , то созданный менеджер очередей будет создан как менеджер по умолчанию.
–g ApplicationGroup — Опция применима только для AIX, Sun-Solaris и HP-UX. Указывается имя группы, которой разрешается запускать MQI приложения, работать с файловой системой менеджера очередей.
–t IntervalValue — Определяет время интервала триггеринга очередей в миллисекундах. Значение может быть в пределах от 0 до 999 999 999 (более 11 дней). Подробнее о триггеринге см. в лекции 4.
–u DeadLetterQueue — Имя очереди недоставленных сообщений.
–x MaximumUncommittedMessages — Максимальное количество сообщений, которые могут находиться в очередях и транзакции по их отправке еще не завершились. Значение может быть в пределах от 0 до 999 999 999. По умолчанию – 10000.
–z — Запрещает появление сообщений об ошибках. Настоятельно не рекомендуется использовать данную опцию, т.к. при возникновении проблем не будет достаточной информации об ошибках
MQMName — Имя менеджера.
| 0 | Queue manager created | Менеджер очередей создан |
|---|---|---|
| 8 | Queue manager already exists | Менеджер очередей уже существует |
| 49 | Queue manager stopping | Менеджер очередей останавливается |
| 69 | Storage not available | Устройство записи недоступно |
| 70 | Queue space not available | Недоступно пространство для создания очереди |
| 71 | Unexpected error | Непредвиденная ошибка |
| 72 | Queue manager name error | Ошибочное имя менеджера очередей |
| 100 | Log location invalid | Неверное расположение лог-файла |
| 111 | Queue manager created. However, there was a problem processing the default queue manager definition in the product configuration file. The default queue manager specification may be incorrect | Менеджер очередей создан, однако имеется проблема с обработкой менеджера по умолчанию в конфигурационном файле. Описание менеджера по умолчанию может быть неверным. |
| 115 | Invalid log size | Неверный размер лог-файла. |
Возможные ошибки при создании менеджера очередей отражены в документации [7]. Этой книгой » WebSphere MQ . Messages» рекомендуется пользоваться всегда, как только будет получен код ошибки AMQxxxx.
Существует еще один важный параметр CCSID – кодовая страница менеджера. При создании менеджеров на разных серверных платформах и в разных операционных системах кодовые страницы могут отличаться. Для того чтобы исключить процедуру конвертации при передаче сообщений между менеджерами с разными кодовыми страницами рекомендуется на всех менеджерах установить одну и ту же кодовую страницу, например 1251. У WebSphere MQ существует множество таблиц перекодировки, с помощью которых осуществляется конвертация сообщений. Данные таблицы находятся в каталоге C:\Program Files\IBM\WebSphere MQ\conv\table . Если нет соответствующей таблицы перекодировки, то существует вероятность, что соединение между менеджерами очередей будет невозможно.
Просмотреть и изменить текущую кодовую страницу можно с помощью утилиты runmqsc.exe и соответствующих команд в ней, например, alter qmgr force ccsid(1251) . Итак, используя простейший синтаксис :
можно создать менеджер QM_Win2000. Затем следует его активизировать (стартовать).
Для этого существует утилита strmqm :
-c — При указании этой опции менеджер стартует, пересоздает все системные объекты с параметрами по умолчанию и затем останавливается.
-z — Запрещает появление сообщений об ошибках. Использовать ее не рекомендуется.
MQMName — Имя менеджера.
Для простого старта менеджера по умолчанию достаточно набрать в командной строке:
| 0 | Queue manager started | Менеджер очередей стартовал |
|---|---|---|
| 3 | Queue manager being created | Менеджер очередей создается |
| 5 | Queue manager running | Менеджер очередей уже работает |
| 16 | Queue manager does not exist | Менеджер очередей не существует |
| 23 | Log not available | Лог-файл не доступен |
| 49 | Queue manager stopping | Менеджер очередей останавливается |
| 69 | Storage not available | Устройство записи недоступно |
| 71 | Unexpected error | Непредвиденная ошибка |
| 72 | Queue manager name error | Ошибочное имя менеджера очередей |
| 100 | Log location invalid | Неверное расположение лог-файла |
Для остановки менеджера очередей существует утилита endmqm :
-c — Менеджер остановится только после того, как все приложения, работающие с объектами WebSphere MQ «отсоединятся» от самих объектов, то есть ни один объект не будет «захвачен» приложениями. Причем менеджер будет ждать, пока не выполнятся все запросы (действия) приложений. При выполнении команды с этой опцией управление сразу же передается командной строке и не выдается никаких сообщений об остановке.
-w — Практически то же, что и с опцией –с , за исключением того, что пока менеджер останавливается, управление не передается командной строке, а выводится сообщение «Waiting for queue manager MQMName to end».
-i — Менеджер выполнит все текущие запросы приложений и остановится. Если в процессе остановки появятся новые запросы и необработанные транзакции, то при последующем старте менеджера произойдет откат незавершенных транзакций. Управление передается командной строке после остановки менеджера.
-p — Немедленная остановка. Менеджер остановится, не обрабатывая все текущие транзакции и запросы приложений. Остановка с данной опцией может привести к непредсказуемым результатам. Все процессы WebSphere MQ , которые не могут быть корректно остановлены в течение 30 секунд после начала работы endmqm будут отключены.
Перед остановкой менеджера необходимо остановить все приложения, работающие с WebSphere MQ , несмотря на то, что WebSphere MQ в процессе остановки менеджера будет пытаться их отключить.
| 0 | Queue manager ended | Менеджер очередей остановлен |
|---|---|---|
| 3 | Queue manager being created | Менеджер очередей создается |
| 16 | Queue manager does not exist | Менеджер очередей не существует |
| 40 | Queue manager not available | Менеджер очередей не доступен |
| 49 | Queue manager stopping | Менеджер очередей останавливается |
| 69 | Storage not available | Устройство записи недоступно |
| 71 | Unexpected error | Непредвиденная ошибка |
| 72 | Queue manager name error | Ошибочное имя менеджера очередей |
И последняя команда – удаление менеджера:
-z — Запрещает появление сообщений об ошибках. Использовать ее не рекомендуется.
MQMName — Имя менеджера.
При выполнении этой команды удаляется не только менеджер, но и все его объекты. Перед удалением менеджера следует его остановить с помощью команды endmqm . Важно, чтобы в момент удаления менеджера, каталог с содержимым менеджера (для WindowsNT это — C:\Program Files\IBM\WebSphere MQ\Qmgrs\QM_Win2000 ) не был никем «захвачен», иначе удалить менеджер невозможно.
| 0 | Queue manager deleted | Менеджер очередей удален |
|---|---|---|
| 3 | Queue manager being created | Менеджер очередей создается |
| 5 | Queue manager running | Менеджер очередей уже работает |
| 16 | Queue manager does not exist | Менеджер очередей не существует |
| 49 | Queue manager stopping | Менеджер очередей останавливается |
| 69 | Storage not available | Устройство записи недоступно |
| 71 | Unexpected error | Непредвиденная ошибка |
| 72 | Queue manager name error | Ошибочное имя менеджера очередей |
| 100 | Log location invalid | Неверное расположение лог-файла |
| 112 | Queue manager deleted. However, there was a problem processing the default queue manager definition in the product configuration file. The default queue manager specification may be incorrect. | Менеджер очередей удален, однако в конфигурационном файле осталось его имя, как имя менеджера по умолчанию. Описание менеджера по умолчанию может быть неверным. |
Управлять работой менеджеров очередей можно с помощью WebSphere MQ Explorer .
Процесс создания менеджера:
- Запустить WebSphere MQ Explorer .
- Щелкнуть правой кнопкой мыши по «Queue Managers».
- Выбрать из контекстного меню пункт «New» => «Queue Manager».
- Выбрать из контекстного меню пункт «New» => «Queue Manager».
Рис. 2.7. Создание менеджера очередей (Шаг 1)
Queue Manager – имя менеджера;
Make this the default queue manager – флажок, определяющий будет ли этот менеджер менеджером по умолчанию;
Def. Transmission Queue – имя трансмиссионной очереди по умолчанию рекомендуется оставить пустым во избежание ошибок передачи данных;
Dead Letter Queue – очередь недоставленных сообщений;
Max Handle Limit – количество открытых объектов WebSphere MQ одним приложением (одна программа не сможет работать одновременно более чем с 256 очередями);
Trigger Interval – значение интервала времени, через который опрашивается состояние очереди триггерными процессами;
Max Uncommitted Msgs – максимальное количество сообщений, которые могут находится в очередях и транзакции по их отправке еще не завершились;
Рис. 2.8. Создание менеджера очередей (Шаг 2)
Use circular/linear logging — с помощью данного флажка можно выбрать тип логирования на вновь создаваемом менеджере;
Log Path – указывает путь, где будут созданы лог-файлы;
Log File Size — размер файла логирования, размер созданного файла будет в 4 раза превышать указанное число;
Log Primary Files – количество первичных файлов логирования;
Log Secondary Files – число вторичных файлов логирования.
Рис. 2.9. Создание менеджера очередей (Шаг 3)
Start Queue Manager – при установленном флажке менеджер очередей будет активизирован непосредственно сразу после создания;
Create Server Connection Channel – установка данного флажка позволит создать канал ( SYSTEM.ADMIN.SVRCONN ) для удаленного управления объектами менеджера через протокол TCP/IP.
Рис. 2.10. Создание менеджера очередей (Шаг 4)
Create listener configured for TCP/IP – создает listener для удаленного подключения к менеджеру;
Listen on port number – номер порта для работы listener (по умолчанию — 1414 ).
После нажатия на кнопку «Finish» менеджер с именем QM_Win2000 будет создан и произведен его старт. На оснастке консоли WebSphere MQ Explorer с левой стороны должно появиться имя менеджера, как это показано на рис.2.6.
Для удаления менеджера очередей через WebSphere MQ Explorer нужно вызвать контекстное меню из имени менеджера и выполнить команду «Stop». Следует напомнить, что перед этим нужно остановить все receiver- каналы, а также все программы, помещающие или считывающие сообщения из очередей. Способ остановки можно выбрать «Immediate» (незамедлительно). После того как менеджер будет остановлен, опять же с помощью контекстного меню выполнить команду «Delete». После этого менеджер очередей будет удален вместе со всеми своими объектами, и его восстановление будет невозможно.
В заключении можно добавить, что все эти процессы не представляют особой сложности. Процесс установки WebSphere MQ на NT-платформу занимает около получаса и решающим обстоятельством является мощность или скорость дисковых ресурсов. На процесс создания менеджера после ввода всех параметров уйдет не более минуты. Время остановки менеджера зависит от количества объектов. Для примера можно сказать, что на компьютере Pentium III с тактовой частотой 700 MHz и оперативной памятью 512Mb, менеджер, содержащий 1000 очередей, останавливается меньше чем за 30 секунд.
WebSphere MQ для начинающих
В рамках одной из задач было необходимо интегрироваться с внешней системой. В проме и у всех разработчиков стоит IBM WebSphere поэтому WebSphere MQ отлично вписывался, учитывая также то, что с IBM WebSphere у них отличная интеграция «из коробки». Для начала установим и настроим WebSphere и WebSphere MQ, после напишем простое приложение для отправки и приема данных из очереди и завершим все установкой и настройкой HermesJMS и посмотрим как отправлять и просматривать сообщения из нее. Все будет производится в Windows 7. Перед тем как продолжать скачайте выше перечисленные программы.
Установка и настройка WebSphere и WebSphere MQ
Надеюсь Вы уже скачали все необходимые программы и готовы приступить к установке. Первым делом запустите установщик IBM Installation Manager. Дабы не увеличивать размер статьи скриншоты, которые не имеют особой смысловой нагрузки, буду убирать в спойлеры, т.к. полностью удалить из статьи считаю неправильно т.к. они дают понимание что Вы делаете все правильно.




Перезапускаем Instalation Manager и идем в пункт Файл -> Параметры. Добавляем хранилище из первого диска.

Нажимаем ОК и начинаем установку.




Убираем флажок с русского перевода.


Далее установщик попросит вставить диски 2 и 3. Вставляем их.

После установки автоматически запустится менеджер профилей.

Нажимаем кнопку «Create. » и далее делаем как на скриншотах ниже.




Теперь установим WebSphere MQ.








После того как установка завершена давайте настроим WebSphere MQ и WebSphere. Начнем с WebSphere MQ так как нам понадобятся имена очередей и менеджер очередей при настройке WebSphere. Все команды исполняются из директории bin каталога WebSphere MQ. Первым делом создадим менеджер очередей и назовем его HABR_QUEUE_MANAGER, используя команду crtmqm.exe HABR_QUEUE_MANAGER.

Запустим наш только что созданный менеджер очередей с помощью команды strmqm.exe HABR_QUEUE_MANAGER.

- DEFINE QLOCAL(HOME.TO.ES) — очередь для отправки сообщений из нашего приложения во внешнюю систему
- DEFINE QLOCAL(ES.TO.HOME) — очередь для приема сообщений из внешней системы
- DEFINE LISTENER(HABR_QUEUE_MANAGER.LISTENER) TRPTYPE (TCP) PORT(1414)
- START LISTENER(HABR_QUEUE_MANAGER.LISTENER)
- DEFINE CHANNEL(SYSTEM.ADMIN.SVRCONN) CHLTYPE(SVRCONN)
Приступим к настройке WebSphere Application Server.
Создадим Connection factory. Для этого запустим консоль администратора и выберем пункт Resources->JMS providers->WebSphere MQ messaging provider->Queue connection factories->New (Как показано на скриншоте ниже).
Далее вводим имя и jndi имя.

Вписываем имя queue manager-а.

- Снова запустите командную строку MQ и выполните runmqsc.exe HABR_QUEUE_MANAGER
- Наберите ALTER QMGR CHLAUTH(DISABLED)
- Перейдите в раздел службы в Windows и у службы IBM MQSeries в разделе «Вход в систему» замените на свою учетную запись. Тоже самое проделайте для службы WebSphere Application Server 8.5
- Перезагрузите систему и запустите HABR_QUEUE_MANAGER и стартаните LISTENER(HABR_QUEUE_MANAGER.LISTENER)
- Теперь все должно заработать
Теперь создаем очереди. Нам нужно создать 2 очереди. Названия у них будут как и у очередей, созданных в WebSphere MQ. Если кто забыл то они называются ES.TO.HOME и HOME.TO.ES. Идем в пункт Resources->JMS->Queues->New


Вторую создаем по аналогии.

Осталось настроить Listener port. Заходим в Application servers -> server1 -> Message listener service -> Listener ports и добавляем новый.

Сохраняем конфигурацию. Мы указали jndi имя queue connection manager-а и jndi имя очереди, в которую будут приходить сообщения из внешней системы. Запустите порт.
Теперь у нас есть настроенные WebSphere Application Server и WebSphere MQ. Можно приступать к созданию простого тестового приложения.
Создание простого приложения для отправки и приема сообщений из очереди
Я умышленно при разработке приложения не буду использовать различные средства для сборки проектов таких как Maven, Gradle или ant, чтобы вы могли понять что вообще происходит за кулисами. Но все же для удобства напишу пару скриптов, с помощью которых будет производится сборка проекта в ear. Весь проект я выложил на github. Ниже я опишу только основные моменты.
Отправка сообщения в очередь
Чтобы отправить сообщение создадим сервлет, бин и форму для ввода сообщения.
Начнем с класса JMSMessageBean из модуля ejb-core. В методе ejbCreate мы получаем ссылки на Connection factory и очередь, в которую будем отправлять сообщения. Метод processMessage предназначен для создания текстового сообщения и отправки его в очередь.
Ниже показан наш сервлет SendJMSMessageServlet. В методе init получаем ссылку на бин, который описан выше. Далее в методе doPost он принимает сообщение от формы и направляет методу processMessage бина. Всю остальную работу выполняет бин.
Html форма отправки самая элементарная. Это не самая важная часть. Сообщение можно было захардкодить или получать из properties файла. Но код все равно приведу.
Установка и настройка HermesJMS
Если WebSphere MQ установлена на другой машине и Вам надоело бегать проверять сообщения в очереди или просто хотите иметь удобное средство для отправки тестовых сообщений в очередь, то можно использовать HermesJMS. Возможно есть аналоги, но те, которые я находил, были платные. Посоветуйте в комментариях хорошие бесплатные аналоги если знаете. С удовольствием рассмотрю другие подобные системы. Конкретно в HermesJMS не совсем устраивают некоторые UI баги и не освобождаются ресурсы если отправлять сообщение из файла (лочит намертво), но жить с ними можно.
И так, приступим к установке и настройке.





Запустите HermesJMS и добавьте новую сессию. Для начала перейдите во вкладку Providers и добавьте новую группу. Назовите ее как на скриншоте(хотя это не важно) и добавьте все jar файлы, перечисленные ниже.

После добавления провайдера в пункте Session выберите его из выпадающего списка. Пример настройки других полей показан на скриншоте ниже.

Теперь попробуем отправить сообщение в нашу очередь. Для это заходим по адресу http://localhost:9080/habr/sendMessage и вводим любое сообщение в поле ввода и нажимаем кнопку «Отправить».

Теперь откройте HermesJMS и откройте очередь HOME.TO.ES на просмотр. Если Вы увидели сообщение как показано ниже на скриншоте, то все произведенные выше действия Вы выполнили верно.

На этом я статью завершаю. Всем спасибо за внимание! Надеюсь она будет кому-то полезна.
Sprachassistent ja, aber bitte ohne Datenstaubsauger
5 mobile app development services for fast, secure innovation
How to Create an Integrated Software Delivery Pipeline Using the XebiaLabs DevOps Platform
3 best practices for digital transformation
KI: Wenn es um´s Geld geht, schwindet das Vertrauen der Verbraucher
Ähnliche Artikel
MQ Explorer Configuration Examples
This guide started off on how to access a local QM on Linux using MQ Explorer.Then it morphed into a great little article on my experiences. In this article I cover how to allow connections from MQ Explorer and to secure what WMQ objects can be accessed. I thought it was about time I documented it. I always seem to forget all the parts required.
Upload to server and unzip
Complete install, then install a JRE. To keep thing s simple you can install the WMQ JRE. I suppose you must have either trial version of WMQ or a full-version otherwise why would you be installing MQ Explorer to access a local Queue Manager?
Result:
[root@localhost wmq75_install]# rpm -ivh MQSeriesJRE-7.5.0-0.x86_64.rpm
Locate the download by following links on:
then navigate to /op/ibm/WebSphere_MQ_Explorer
Once MQ Explorer is running:
2538 (09EA) (RC2538): MQRC_HOST_NOT_AVAILABLE
Explanation
An MQCONN call was issued from a client to connect to a queue manager but the attempt to allocate a conversation to the remote system failed. Common causes of this reason code are:
- The listener has not been started on the remote system.
- The connection name in the client channel definition is incorrect.
- The network is currently unavailable.
This is usually due to the Channels defined.
DEFINE CHANNEL(SYSTEM.ADMIN.SVRCONN) CHLTYPE(SVRCONN)
1 : DEFINE CHANNEL(SYSTEM.ADMIN.SVRCONN) CHLTYPE(SVRCONN)
AMQ8014: WebSphere MQ channel created.
Access is not permitted. You are not authorised to perform this operation (AMQ4306)
This should not be fixed with:
ALTER CHL(SYSTEM.ADMIN.SVRCONN) CHLTYPE(SVRCONN) MCAUSER(‘mqm’)
Specifying MCAUSER on the SVRCONN channel means that any application that connects using that channel will have the authority of the user specified on the channel, not the user id sent by the client application. If you specified mqm, which is mq’s adminstration user on unix/linux, this means any application connecting using that channel will have full authority on the queue manager.
The most common cause is that you are on a Windows machine and connecting as as specific user. most likely a domain user something like <Machine name>\<user name>
On my laptop (Windows Professional 7) I added my user account to the mqm goup on my Windows machine. We know that on Linux mqm group has access to the QM objects.
Note: Refresh security on queue manager once the SVRCONN channel types is added to the QM.
Next we also need to ensure that the user is given access
Viewing the logs, when trying to use MQ Explorer locally on the Linux machine. This can help use see what’s happening?
02/05/2013 09:50:25 AM – Process(9716.12) User(mqm) Program(amqrmppa)
AMQ9776: Channel was blocked by userid
The inbound channel ‘SYSTEM.ADMIN.SVRCONN’ was blocked from address ’127.0.0.1′
because the active values of the channel were mapped to a userid which should
be blocked. The active values of the channel were ‘MCAUSER(mqm) CLNTUSER(mqm)’.
Contact the systems administrator, who should examine the channel
authentication records to ensure that the correct settings have been
The ALTER QMGR CHLAUTH switch is used to control whether channel
authentication records are used. The command DISPLAY CHLAUTH can be used to
query the channel authentication records.
02/05/2013 09:50:25 AM – Process(9716.12) User(mqm) Program(amqrmppa)
AMQ9999: Channel ‘SYSTEM.ADMIN.SVRCONN’ to host ‘localhost (127.0.0.1)’ ended
The channel program running under process ID 9716 for channel
‘SYSTEM.ADMIN.SVRCONN’ ended abnormally. The host name is ‘localhost
(127.0.0.1)’; in some cases the host name cannot be determined and so is shown
Look at previous error messages for the channel program in the error logs to
determine the cause of the failure. Note that this message can be excluded
completely or suppressed by tuning the “ExcludeMessage” or “SuppressMessage”
attributes under the “QMErrorLog” stanza in qm.ini. Further information can be
found in the System Administration Guide.
There are several options at this point:
- If the customer wants the required userID to have full privileges over all MQ objects, add the userID to the mqm group on the UNIX machine, again using the O/S facilities to do so. In this case there is no further action required.
- An alternative method of giving full privileges is to set the MCAUSER attribute on the SVRCONN channel created at step 4 above to mqm. Do this by adding MCAUSER(‘mqm’) to the above runmqsc command. Again, no further action is required.
- If restricted access to MQ objects is required, further commands are necessary as below
We want to use option 3 as it is best for enterprise security. (use options 1 and 2, if security is of no concern)
Grant specific authority over MQ objects to the required userID
Issue these setmqaut commands to grant minimal authority to the userID:
We need to create and equivalent user on the linux box to match the Widows user
My windows user is called SteveRobinson, and I cannot have a username in Linux that contains spaces. So what do I do now? Well create a group called mqexplorer on my Windows desktop, add <myuser> “Steve Robinson” to this group. then modify mqauth to allow access form anyone in this group.
Creating the new Windows sgroup
We also need to create a matching group on Linux
setmqaut -m TEST2 -t qmgr -g mqexplorer +connect +inq +dsp
setmqaut -m TEST2 -t q -n SYSTEM.DEFAULT.MODEL.QUEUE -g mqexplorer +inq +browse +get
setmqaut -m TEST2 -t q -n SYSTEM.ADMIN.COMMAND.QUEUE -g mqexplorer +inq +put
The purpose of these commands is:1. Grant authority to access the qmgr2. Grant authority to the client channel to get the command server reply messages3. Grant authority to put messages onto the command server input queue
When we try to access we get the following error
2/05/2013 10:37:13 AM – Process(8945.70) User(mqm) Program(amqzlaa0)
AMQ5653: The user ‘steve’ is not defined.
The system call getpwnam(“steve”) failed with errno -1.
Create the user ‘steve’ and retry the operation.
I guess MQ Explorer (Windows) is using the first part of my Windows user name. Let’s create a Linux user called steve and set the password as steve and add to mqexplorer group and see what happens.
useradd -g mqexplorer steve
AMQ8077: Entity ‘steve robins’ has insufficient authority to access object
The specified entity is not authorized to access the required object. The
following requested permissions are unauthorized: inq
Ensure that the correct level of authority has been set for this entity against
the required object, or ensure that the entity is a member of a privileged
Ok, it is getting confused, so lets now manually tell MQ explorer to use steve
MQ Explorer cannot administer the queue manager because the user is not authorised to open the queue ‘SYSTEM.MQEXPLORER.REPLY.MODEL’. (AMQ4401)
MQ Explorer cannot administer the queue manager because the user is not authorised to open the queue ‘SYSTEM.MQEXPLORER.REPLY.MODEL’. (AMQ4401)
Severity: 10 (Warning)
Explanation: MQ Explorer uses the queue to administer this queue manager.
Response: Allow MQ Explorer to open the queue and retry.
02/05/2013 10:53:49 AM – Process(8945.74) User(mqm) Program(amqzlaa0)
AMQ8077: Entity ‘steve ‘ has insufficient authority to access object
The specified entity is not authorized to access the required object. The
following requested permissions are unauthorized: inq
Ensure that the correct level of authority has been set for this entity against
the required object, or ensure that the entity is a member of a privileged
setmqaut -m TEST2 -t q -n SYSTEM.MQEXPLORER.REPLY.MODEL -g mqexplorer +inq +browse +get +dsp
Try again connecting from MQ Explorer on windows
OK we no successful connected, but lets try now with removing the QM named user
AMQ8077: Entity ‘steve robins’ has insufficient authority to access object
The specified entity is not authorized to access the required object. The
following requested permissions are unauthorized: inq
Ensure that the correct level of authority has been set for this entity against
the required object, or ensure that the entity is a member of a privileged
02/05/2013 10:53:49 AM – Process(8945.74) User(mqm) Program(amqzlaa0)
AMQ8077: Entity ‘steve ‘ has insufficient authority to access object
The specified entity is not authorized to access the required object. The
following requested permissions are unauthorized: inq
Ensure that the correct level of authority has been set for this entity against
the required object, or ensure that the entity is a member of a privileged
Basically if your user id on Windows is a non acceptable Linux format ( 8 chars), then you need to create a user on Linux and then assign setmqauth security on objects either by using principle name or group name (Linux user must be in group). Then we name the use in the Connect to QM wizard and when MQExplorer connects it uses that user.
Note: Below are the commands for setting access to MQ objects for a named user as opposed to group
setmqaut -m MYQMGR -t qmgr -p myuser +connect +inq +dsp
setmqaut -m MYQMGR -t q -n SYSTEM.DEFAULT.MODEL.QUEUE -p myuser +inq +browse +get
setmqaut -m MYQMGR -t q -n SYSTEM.ADMIN.COMMAND.QUEUE -p myuser +inq +put
There is no point in adding users to groups in Windows unless IBM WebSphere MQ is installed on windows.
As I have always mentioned in other articles WMQ security is based on users and groups and you just have to think a bit harder when it comes to remote access from a Windows client.
Using the tips and tricks above, you will see that you will find you can connect, but you will be limited in what you can administer. As I mentioned earlier you can open up security. This article was more about connecting with the least amount of access, without creating a security hole. Often in moist cases we give full access and leave it that. But when you do want to secure WMQ for MQ Explorer access, then this is a great little article to help you get ideas.
If you are interested in a clever security exit, you can use BlockIP to lock and even audit access to a QM.
You can also use blockip open source security exit tool to secure WMQ.
Download block IP from the site mentioned below in the appendix section
Upload the appropriate version for you system. My example is Linux 64 bit
Linux (Intel 64 bit)
Just untar BLOCKIP2.TAR from Linux_x86_64 subdir in /var/mqm/exits64, and you’re almost ready to go.
tar -xvf BlockIP2.tar
You will need to change the owner using root authority:
chown mqm:mqm /var/mqm/exits64/BlockIP2chmod 550 /var/mqm/exits64/BlockIP2
Alter the channel
alt chl(SYSTEM.ADMIN.SVRCONN) chltype(SVRCONN) +
Example Log for access denied
tail -f AMQERR01.LOG
Result:
02/05/2013 09:45:42 AM – Process(9716.11) User(mqm) Program(amqrmppa)