Ich beschäftige mich mit der Entwicklung und dem Design von Integrationsservices für IBM Integration Bus und möchte meiner Meinung nach nützliche Informationen weitergeben.
Bei der Arbeit an einem neuen Dienst musste ein Adapter für den IS erstellt werden, der die Oracle Advanced Queuing-Nachrichtenwarteschlangenschnittstelle implementiert.
Nach einigen Recherchen habe ich drei Integrationsoptionen in der Reihenfolge ihrer Priorität identifiziert:
- Oracle Messaging Gateway , seit
- In der Oracle EE-Lizenz enthalten. Glücklicherweise hat die Organisation eine solche
- Eine MOM-Implementierung (Message Oriented Middleware) mit Nicht-Oracle-Messagingsystemen, einschließlich IBM MQ
- Integriert sich mit nativen MQ-Knoten (MQInput / MQOutput / MQGet) in IIB.
- Oracle Internet Directory seit
- Implementiert JNDI, das für die JMS-Integration erforderlich ist
- Integriert sich mit nativen JMS-Knoten (JMSInput / JMSOutput / JMSReceive) in IIB.
- Benutzerdefinierte Implementierung in Java seit
- Es gibt eine Java-API für Oracle AQ
- Integriert sich über den JavaCompute-Knoten in IIB
Ich hatte erwartet, dass ich leicht aussteigen würde, weil Ich war mir sicher, dass sie eine der ersten beiden Optionen wählen würden. In der IBM Knowledge Base wird beschrieben, wie Sie Interaktionen mit diesen Produkten einrichten. Leider fiel die Wahl aus mehreren Gründen auf nacktes Java.
Trotz der Tatsache, dass dies nicht sehr korporativ ist und jegliche Herstellerunterstützung ausschließt, habe ich den Adapter geschrieben. Ich habe mich entschieden, JMeter zum Testen zu verwenden.
Informationen zum Einrichten des Sendens von Anforderungen an die AQ-Warteschlange finden Sie hier .
Alles hat geklappt und vorgeschlagen, dass dieser Mechanismus auf einen Broker angewendet werden kann, indem ein nicht standardmäßiger Konfigurationsdienst wie JMSProvider erstellt wird. Es war nur notwendig, das Erstellen eines JAR-Spitznamens mit jndi-Parametern zu vermeiden und der Basis keine Anmeldeinformationen zu geben.
Eigentlich brauchen Sie dafür:
- 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.
Infolgedessen funktioniert alles auf nativen Knoten, fast ohne Initiative.
Ich hoffe, es wird jemandem nützlich sein, da diese Methode vom Anbieter nicht beschrieben wird.