I am engaged in the development and design of integration services for IBM Integration Bus and I want to share, in my opinion, useful information.
In the process of working on a new service, it became necessary to create an adapter to the IS that implements the Oracle Advanced Queuing message queue interface.
After doing some research, I identified three integration options in order of priority:
- Oracle Messaging Gateway , since
- Included in the Oracle EE license. Fortunately, the organization has such a
- A message-oriented middleware (MOM) implementation with non-Oracle messaging systems, including IBM MQ
- Integrates with IIB using native MQ nodes (MQInput / MQOutput / MQGet)
- Oracle Internet Directory since
- Implements JNDI required for JMS integration
- Integrates with IIB using native JMS nodes (JMSInput / JMSOutput / JMSReceive)
- Custom implementation in Java since
- There is a Java API for Oracle AQ
- Integrates with IIB using JavaCompute node
I expected to get off easily because I was sure they would choose one of the first two options. The IBM knowledge base details how to set up interactions with these products. But, unfortunately, for a number of reasons, the choice fell on naked Java.
Despite the fact that this is not very corporate and excludes any vendor support, I wrote the adapter. I decided to use JMeter for testing.
About how to set up sending requests to the AQ queue found here .
Everything worked out and suggested that this mechanism can be applied on a broker by creating a non-standard configuration service such as JMSProvider. It was only necessary to avoid creating a jar-nickname with jndi parameters and not to shine credentials to the base.
Actually, for this you need:
- 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.
As a result, everything works on native nodes, almost without any initiative.
I hope it will be useful to someone, because this method is not described by the vendor.