[Системное администрирование] Прямая интеграция IBM Integration Bus и Oracle AQ

Автор Сообщение
news_bot ®

Стаж: 6 лет 9 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
22-Сен-2020 19:31

Здравствуйте!
Занимаюсь разработкой и проектированием интеграционных сервисов под IBM Integration Bus и хочу поделиться, на мой взгляд, полезной информацией.
В процессе работы над новым сервисом возникла необходимость создать адаптер к ИС реализующей интерфейс очередей сообщений Oracle Advanced Queuing.
Проведя некоторый research, выделил три варианта интеграции в порядке приоритета:
  • Oracle Messaging Gateway, т.к.
    • Входит в лицензию Oracle EE. Благо в организации такая имеется
    • Реализация MOM (message-oriented middleware) с отличными от Oracle системами обмена сообщениями, в том числе IBM MQ
    • С IIB интегрируется c использованием нативных MQ-узлов (MQInput/MQOutput/MQGet)

  • Oracle Internet Directory т.к.
    • Реализует JNDI, необходимый для интеграции по JMS
    • С IIB интегрируется c использованием нативных JMS-узлов (JMSInput/JMSOutput/JMSReceive)

  • Кастомная реализация на Java т.к.
    • Есть Java API для Oracle AQ
    • С IIB интегрируется c использованием узла JavaCompute

Я рассчитывал легко отделаться т.к. был уверен, что выберут один из первых двух вариантов. В базе знаний IBM подробно описано как настроить взаимодействие с указанными продуктами. Но, к сожалению, по ряду причин, выбор пал на голую Java.
Несмотря на то, что это не очень корпоративно и исключает всякую поддержку вендора, адаптер я написал. Для тестирования решил использовать JMeter.
Про то как настроить отправку запросов в очереди AQ нашел тут.
Все получилось и навело на мысль, что данный механизм можно применить и на брокере, создав нешаблонный конфигурационный сервис типа JMSProvider. Необходимо только было избежать создания jar-ника с параметрами jndi и не светить креденшлы к базе.
Собственно, для этого нужно:
  • Положить на файловую систему необходимые библиотеки aqapi.jar, jta.jar, ojdbc8.jar
  • Связать креденшлы к базе с JNDI-ресурсом командой:
    mqsisetdbparms BRK_NAME -n jndi::oracle.jms.AQjmsInitialContextFactory -u oracleUser -p oraclePassword

  • Добавить JMS-провайдер, где в команде указать:
    • URL базы — параметр jndiEnvironmentParms
    • путь к папке с библиотеками — параметр jarsURL
    • наименование фабрики соединений — параметр connectionFactoryName
    • начальный контекст — параметр initialContextFactory
    • флаг поддержки транзакционности — параметр jmsProviderXASupport

    mqsicreateconfigurableservice BRK_NAME -c JMSProviders -o Service_AQ_JMS -n jarsURL,jndiEnvironmentParms,jmsProviderXASupport,connectionFactoryName,initialContextFactory -v "/home/mqm/aq/lib","db_url=jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=hostName) (PORT=1521))(CONNECT_DATA=(SERVICE_NAME=serviceName)))","true","QueueConnectionFactory","oracle.jms.AQjmsInitialContextFactory"

  • Далее использовать созданный конфигурационный сервис в JMS-узлах брокера. Пути к очередям или топикам указываются в нотации Queues/QUEUE_NAME, Topics/TOPIC_NAME. В случае использования destination list необходимо дописать jndi://, т.е. jndi://Queues/QUEUE_NAME.

В итоге все работает на нативных узлах, почти без самодеятельности.
Надеюсь кому-нибудь будет полезно, ведь данный метод вендором не описан.
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_sistemnoe_administrirovanie (Системное администрирование), #_wmb, #_iib, #_aq, #_message_broker, #_ibm_integration_bus, #_oracle_advanced_queuing, #_oracle_aq, #_jms, #_sistemnoe_administrirovanie (
Системное администрирование
)
Профиль  ЛС 
Показать сообщения:     

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

Текущее время: 25-Ноя 16:46
Часовой пояс: UTC + 5