Integración directa de IBM Integration Bus y Oracle AQ

¡Hola!



Me dedico al desarrollo y diseño de servicios de integración para IBM Integration Bus y quiero compartir, en mi opinión, información útil.



En el proceso de trabajar en un nuevo servicio, se hizo necesario crear un adaptador para el IS que implementa la interfaz de cola de mensajes de Oracle Advanced Queueing.



Después de investigar un poco, identifiqué tres opciones de integración en orden de prioridad:



  1. Oracle Messaging Gateway , desde



    • Incluido en la licencia de Oracle EE. Afortunadamente, la organización tiene tal
    • Una implementación de middleware orientado a mensajes (MOM) con sistemas de mensajería que no son de Oracle, incluido IBM MQ
    • Se integra con IIB utilizando nodos MQ nativos (MQInput / MQOutput / MQGet)


  2. Oracle Internet Directory desde



    • Implementa JNDI requerido para la integración JMS
    • Se integra con IIB utilizando nodos JMS nativos (JMSInput / JMSOutput / JMSReceive)


  3. Implementación personalizada en Java desde



    • Hay una API de Java para Oracle AQ
    • Se integra con IIB mediante el nodo JavaCompute


Esperaba bajarme fácilmente porque Estaba seguro de que elegirían una de las dos primeras opciones. La base de conocimientos de IBM detalla cómo configurar interacciones con estos productos. Pero, desafortunadamente, por varias razones, la elección recayó en Java desnudo.



A pesar de que esto no es muy corporativo y excluye el soporte de cualquier proveedor, escribí el adaptador. Decidí usar JMeter para realizar pruebas.



Acerca de cómo configurar el envío de solicitudes a la cola AQ que se encuentra aquí .



Todo funcionó y sugirió que este mecanismo se puede aplicar en un corredor mediante la creación de un servicio de configuración que no sea de plantilla, como JMSProvider. Solo era necesario evitar crear un jar-nickname con parámetros jndi y no brillar credenciales en la base.



En realidad, para esto necesitas:



  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, todo funciona en nodos nativos, casi sin ninguna iniciativa.



Espero que le sea útil a alguien, porque este método no está descrito por el proveedor.



All Articles