Русский
Русский
English
Статистика
Реклама

Oracle advanced queuing

Из песочницы Прямая интеграция IBM Integration Bus и Oracle AQ

22.09.2020 18:18:39 | Автор: admin
Здравствуйте!

Занимаюсь разработкой и проектированием интеграционных сервисов под IBM Integration Bus и хочу поделиться, на мой взгляд, полезной информацией.

В процессе работы над новым сервисом возникла необходимость создать адаптер к ИС реализующей интерфейс очередей сообщений Oracle Advanced Queuing.

Проведя некоторый research, выделил три варианта интеграции в порядке приоритета:

  1. Oracle Messaging Gateway, т.к.

    • Входит в лицензию Oracle EE. Благо в организации такая имеется
    • Реализация MOM (message-oriented middleware) с отличными от Oracle системами обмена сообщениями, в том числе IBM MQ
    • С IIB интегрируется c использованием нативных MQ-узлов (MQInput/MQOutput/MQGet)

  2. Oracle Internet Directory т.к.

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

  3. Кастомная реализация на Java т.к.

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

Я рассчитывал легко отделаться т.к. был уверен, что выберут один из первых двух вариантов. В базе знаний IBM подробно описано как настроить взаимодействие с указанными продуктами. Но, к сожалению, по ряду причин, выбор пал на голую Java.

Несмотря на то, что это не очень корпоративно и исключает всякую поддержку вендора, адаптер я написал. Для тестирования решил использовать JMeter.

Про то как настроить отправку запросов в очереди AQ нашел тут.

Все получилось и навело на мысль, что данный механизм можно применить и на брокере, создав нешаблонный конфигурационный сервис типа JMSProvider. Необходимо только было избежать создания jar-ника с параметрами jndi и не светить креденшлы к базе.

Собственно, для этого нужно:

  1. Положить на файловую систему необходимые библиотеки aqapi.jar, jta.jar, ojdbc8.jar
  2. Связать креденшлы к базе с JNDI-ресурсом командой:

    mqsisetdbparms BRK_NAME -n jndi::oracle.jms.AQjmsInitialContextFactory -u oracleUser -p oraclePassword
    

  3. Добавить 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"
    

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

В итоге все работает на нативных узлах, почти без самодеятельности.

Надеюсь кому-нибудь будет полезно, ведь данный метод вендором не описан.
Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru