我从事IBM Integration Bus集成服务的开发和设计,我想分享有用的信息。
在处理新服务的过程中,有必要为实现Oracle Advanced Queuing消息队列接口的IS创建适配器。
经过研究,我按优先级确定了三种集成选项:
- 从此开始,Oracle Messaging Gateway
- 包含在Oracle EE许可证中。幸运的是,该组织拥有
- 使用非Oracle消息传递系统(包括IBM MQ)的面向消息的中间件(MOM)实现
- 使用本机MQ节点(MQInput / MQOutput / MQGet)与IIB集成
- Oracle Internet Directory自
- 实现JMS集成所需的JNDI
- 使用本机JMS节点(JMSInput / JMSOutput / JMSReceive)与IIB集成
- 自Java以来的自定义实现
- 有一个用于Oracle AQ的Java API
- 使用JavaCompute节点与IIB集成
我希望轻松下车,因为我确定他们会选择前两个选项之一。 IBM知识库详细介绍了如何与这些产品建立交互。但是,不幸的是,由于多种原因,该选择落在了裸Java上。
尽管事实并非如此,但我还是编写了适配器。我决定使用JMeter进行测试。
关于如何设置发送请求到此处的AQ队列。
一切都解决了,并建议可以通过创建非标准配置服务(例如JMSProvider)将这种机制应用于代理。仅需避免使用jndi参数创建jar昵称,并且不向基础公开凭证。
实际上,为此,您需要:
- 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.
结果,一切都在本机节点上运行,几乎没有任何主动性。
我希望它对某人有用,因为该方法未由供应商描述。