Intégration directe d'IBM Integration Bus et d'Oracle AQ

salut!



Je suis engagé dans le développement et la conception de services d'intégration pour IBM Integration Bus et je souhaite partager, à mon avis, des informations utiles.



Lors du travail sur un nouveau service, il est devenu nécessaire de créer un adaptateur vers le SI qui implémente l'interface de file d'attente de messages Oracle Advanced Queuing.



Après quelques recherches, j'ai identifié trois options d'intégration par ordre de priorité:



  1. Oracle Messaging Gateway , depuis



    • Inclus dans la licence Oracle EE. Heureusement, l'organisation a une telle
    • Une implémentation de middleware orienté message (MOM) avec des systèmes de messagerie non Oracle, y compris IBM MQ
    • S'intègre à IIB à l'aide de nœuds MQ natifs (MQInput / MQOutput / MQGet)


  2. Oracle Internet Directory depuis



    • Implémente le JNDI requis pour l'intégration JMS
    • S'intègre à IIB à l'aide de nœuds JMS natifs (JMSInput / JMSOutput / JMSReceive)


  3. Implémentation personnalisée en Java depuis



    • Il existe une API Java pour Oracle AQ
    • S'intègre à IIB à l'aide du nœud JavaCompute


Je m'attendais à descendre facilement car J'étais sûr qu'ils choisiraient l'une des deux premières options. La base de connaissances IBM détaille comment configurer les interactions avec les produits spécifiés. Mais, malheureusement, pour un certain nombre de raisons, le choix s'est porté sur Java nu.



Malgré le fait que ce n'est pas très professionnel et exclut tout support de fournisseur, j'ai écrit l'adaptateur. J'ai décidé d'utiliser JMeter pour les tests.



À propos de la configuration des demandes d'envoi vers la file d'attente AQ disponible ici .



Tout a fonctionné et a suggéré que ce mécanisme puisse être appliqué sur un courtier en créant un service de configuration non standard tel que JMSProvider. Il était seulement nécessaire d'éviter de créer un pseudo jar avec des paramètres jndi et de ne pas briller les informations d'identification à la base.



En fait, pour cela, vous avez besoin de:



  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.


En conséquence, tout fonctionne sur des nœuds natifs, presque sans aucune initiative.



J'espère qu'elle sera utile à quelqu'un, car cette méthode n'est pas décrite par le vendeur.



All Articles