直接集成IBM Integration Bus和Oracle AQ

你好!



我从事IBM Integration Bus集成服务的开发和设计,我想分享有用的信息。



在处理新服务的过程中,有必要为实现Oracle Advanced Queuing消息队列接口的IS创建适配器。



经过研究,我按优先级确定了三种集成选项:



  1. 从此开始,Oracle Messaging Gateway



    • 包含在Oracle EE许可证中。幸运的是,该组织拥有
    • 使用非Oracle消息传递系统(包括IBM MQ)的面向消息的中间件(MOM)实现
    • 使用本机MQ节点(MQInput / MQOutput / MQGet)与IIB集成


  2. Oracle Internet Directory



    • 实现JMS集成所需的JNDI
    • 使用本机JMS节点(JMSInput / JMSOutput / JMSReceive)与IIB集成


  3. 自Java以来的自定义实现



    • 有一个用于Oracle AQ的Java API
    • 使用JavaCompute节点与IIB集成


我希望轻松下车,因为我确定他们会选择前两个选项之一。 IBM知识库详细介绍了如何与这些产品建立交互。但是,不幸的是,由于多种原因,该选择落在了裸Java上。



尽管事实并非如此,但我还是编写了适配器。我决定使用JMeter进行测试。



关于如何设置发送请求到此处的AQ队列



一切都解决了,并建议可以通过创建非标准配置服务(例如JMSProvider)将这种机制应用于代理。仅需避免使用jndi参数创建jar昵称,并且不向基础公开凭证。



实际上,为此,您需要:



  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