私はIBMIntegration Busの統合サービスの開発と設計に携わっていますが、有用な情報を共有したいと思います。
新しいサービスに取り組む過程で、Oracle AdvancedQueuingメッセージキューインターフェイスを実装するISへのアダプタを作成する必要がありました。
いくつかの調査を行った後、優先度の高い順に3つの統合オプションを特定しました。
- Oracle Messaging Gateway、以降
- OracleEEライセンスに含まれています。幸いなことに、組織にはそのような
- IBM MQを含むOracle以外のメッセージングシステムを使用したメッセージ指向ミドルウェア(MOM)の実装
- ネイティブMQノード(MQInput / MQOutput / MQGet)を使用してIIBと統合します
- 以来のOracleインターネットディレクトリ
- JMS統合に必要なJNDIを実装します
- ネイティブJMSノード(JMSInput / JMSOutput / JMSReceive)を使用してIIBと統合します
- 以来、Javaでのカスタム実装
- OracleAQ用のJavaAPIがあります
- JavaComputeノードを使用してIIBと統合します
簡単に降りられると思っていたので彼らは最初の2つのオプションのいずれかを選択すると確信していました。 IBMナレッジベースでは、これらの製品との相互作用を設定する方法について詳しく説明しています。しかし、残念ながら、いくつかの理由から、選択は裸のJavaに委ねられました。
これはあまり企業的ではなく、ベンダーのサポートを除外しているという事実にもかかわらず、私はアダプターを作成しました。テストにはJMeterを使用することにしました。ここ
にあるAQキューへの送信リクエストの設定方法について。 すべてがうまくいき、JMSProviderなどの非標準の構成サービスを作成することでこのメカニズムをブローカーに適用できることが示唆されました。 jndiパラメータを使用してjar-nicknameを作成することを避け、ベースに資格情報を公開しないようにする必要があるだけでした。 実際、これには次のものが必要です。
- aqapi.jar, jta.jar, ojdbc8.jar
- JNDI- :
mqsisetdbparms BRK_NAME -n jndi::oracle.jms.AQjmsInitialContextFactory -u oracleUser -p oraclePassword
- 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"
- JMS- . Queues/QUEUE_NAME, Topics/TOPIC_NAME. destination list jndi://, .. jndi://Queues/QUEUE_NAME.
その結果、ほとんどイニシアチブなしで、すべてがネイティブノードで機能します。
この方法はベンダーによって説明されていないので、誰かに役立つことを願っています。