Integração direta do IBM Integration Bus e Oracle AQ

OlĆ”!



Estou engajado no desenvolvimento e design de serviços de integração para IBM Integration Bus e desejo compartilhar, em minha opinião, informações úteis.



No processo de trabalhar em um novo serviƧo, tornou-se necessƔrio criar um adaptador para o IS que implementa a interface de fila de mensagens do Oracle Advanced Queuing.



Depois de fazer algumas pesquisas, identifiquei três opções de integração em ordem de prioridade:



  1. Oracle Messaging Gateway , desde



    • IncluĆ­do na licenƧa Oracle EE. Felizmente, a organização possui tal
    • Uma implementação de middleware orientado a mensagem (MOM) com sistemas de mensagens nĆ£o Oracle, incluindo IBM MQ
    • Integra-se com IIB usando nós MQ nativos (MQInput / MQOutput / MQGet)


  2. Oracle Internet Directory desde



    • Implementa JNDI necessĆ”rio para integração JMS
    • Integra-se com IIB usando nós JMS nativos (JMSInput / JMSOutput / JMSReceive)


  3. Implementação personalizada em Java desde



    • Existe uma API Java para Oracle AQ
    • Integra-se com IIB usando o nó JavaCompute


Eu esperava sair facilmente porque Tinha certeza de que escolheriam uma das duas primeiras opƧƵes. A base de conhecimento da IBM detalha como configurar interaƧƵes com os produtos especificados. Mas, infelizmente, por uma sƩrie de razƵes, a escolha recaiu sobre o Java nu.



Apesar do fato de que isso não é muito corporativo e exclui o suporte de qualquer fornecedor, escrevi o adaptador. Decidi usar JMeter para teste.



Sobre como configurar o envio de solicitaƧƵes para a fila AQ encontrada aqui .



Tudo deu certo e sugeriu que esse mecanismo pode ser aplicado em um broker criando um serviço de configuração não padrão, como JMSProvider. Era necessÔrio apenas evitar a criação de um jar-apelido com parâmetros jndi e não apontar credenciais para a base.



Na verdade, para isso vocĆŖ precisa:



  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.


Como resultado, tudo funciona em nós nativos, quase sem qualquer iniciativa.



Espero que seja útil para alguém, pois esse método não é descrito pelo fornecedor.



All Articles