التكامل المباشر لـ IBM Integration Bus و Oracle AQ

مرحبا!



أنا منخرط في تطوير وتصميم خدمات التكامل لـ IBM Integration Bus وأريد أن أشارك ، في رأيي ، معلومات مفيدة.



في عملية العمل على الخدمة الجديدة ، أصبح من الضروري إنشاء محول إلى IS الذي يقوم بتنفيذ واجهة انتظار رسائل Oracle Advanced Queuing.



بعد إجراء بعض الأبحاث ، حددت ثلاثة خيارات للتكامل مرتبة حسب الأولوية:



  1. Oracle Messaging Gateway ، منذ ذلك الحين



    • مشمول في ترخيص Oracle EE. لحسن الحظ ، فإن المنظمة لديها مثل هذا
    • تنفيذ برمجية وسيطة موجهة للرسائل (MOM) مع أنظمة مراسلة غير تابعة لـ Oracle ، بما في ذلك IBM MQ
    • يتكامل مع IIB باستخدام عقد MQ الأصلية (MQInput / MQOutput / MQGet)


  2. Oracle Internet Directory منذ ذلك الحين



    • تنفذ JNDI المطلوبة لتكامل JMS
    • يتكامل مع IIB باستخدام عقد JMS الأصلية (JMSInput / JMSOutput / JMSReceive)


  3. التنفيذ المخصص في Java منذ ذلك الحين



    • هناك Java API لـ Oracle AQ
    • يتكامل مع IIB باستخدام عقدة JavaCompute


كنت أتوقع النزول بسهولة بسبب كنت متأكدًا من أنهم سيختارون أحد الخيارين الأولين. توضح قاعدة معرفة IBM كيفية إعداد التفاعلات مع هذه المنتجات. ولكن ، لسوء الحظ ، ولعدد من الأسباب ، وقع الاختيار على جافا العارية.



على الرغم من حقيقة أن هذا ليس مؤسسيًا للغاية ويستبعد أي دعم للبائع ، فقد كتبت المحول. قررت استخدام JMeter للاختبار.



حول كيفية إعداد إرسال الطلبات إلى قائمة انتظار AQ الموجودة هنا .



تم تنفيذ كل شيء واقترح إمكانية تطبيق هذه الآلية على وسيط من خلال إنشاء خدمة تكوين غير قياسية مثل JMSProvider. كان من الضروري فقط تجنب إنشاء اسم مستعار باستخدام معلمات 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.


نتيجة لذلك ، يعمل كل شيء على العقد الأصلية ، تقريبًا بدون أي مبادرة.



آمل أن يكون مفيدًا لشخص ما ، لأن هذه الطريقة لم يصفها البائع.



All Articles