Integrasi langsung dari IBM Integration Bus dan Oracle AQ

Halo!



Saya terlibat dalam pengembangan dan desain layanan integrasi untuk IBM Integration Bus dan saya ingin berbagi, menurut pendapat saya, informasi yang berguna.



Dalam proses mengerjakan layanan baru, menjadi perlu untuk membuat adaptor ke IS yang mengimplementasikan antarmuka antrian pesan Oracle Advanced Queuing.



Setelah melakukan beberapa penelitian, saya mengidentifikasi tiga opsi integrasi dalam urutan prioritas:



  1. Oracle Messaging Gateway , sejak



    • Termasuk dalam lisensi Oracle EE. Untungnya, organisasi tersebut memiliki
    • Implementasi middleware (MOM) berorientasi pesan dengan sistem pesan non-Oracle, termasuk IBM MQ
    • Terintegrasi dengan IIB menggunakan node MQ asli (MQInput / MQOutput / MQGet)


  2. Direktori Internet Oracle sejak



    • Menerapkan JNDI yang diperlukan untuk integrasi JMS
    • Terintegrasi dengan IIB menggunakan node JMS asli (JMSInput / JMSOutput / JMSReceive)


  3. Implementasi kustom di Java sejak



    • Ada API Java untuk Oracle AQ
    • Terintegrasi dengan IIB menggunakan node JavaCompute


Saya berharap untuk turun dengan mudah karena Saya yakin mereka akan memilih salah satu dari dua opsi pertama. Basis pengetahuan IBM merinci bagaimana mengatur interaksi dengan produk-produk ini. Tapi, sayangnya, karena sejumlah alasan, pilihan jatuh pada Java telanjang.



Terlepas dari kenyataan bahwa ini tidak terlalu korporat dan tidak termasuk dukungan vendor, saya menulis adaptor. Saya memutuskan untuk menggunakan JMeter untuk pengujian.



Tentang cara mengatur permintaan pengiriman ke antrian AQ ditemukan di sini .



Semuanya berhasil dan menyarankan agar mekanisme ini dapat diterapkan pada broker dengan membuat layanan konfigurasi non-template seperti JMSProvider. Itu hanya perlu untuk menghindari membuat nama panggilan-jar dengan parameter jndi dan tidak memberikan kredensial ke pangkalan.



Sebenarnya, untuk ini Anda membutuhkan:



  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.


Hasilnya, semuanya bekerja pada node native, hampir tanpa inisiatif apa pun.



Semoga bermanfaat bagi seseorang, karena cara ini tidak dijelaskan oleh vendor.



All Articles