为我关于使用 Camel 和 JMS 组件的问题设置上下文: • 目前面向消息中间件支持的Camel 组件有ActiveMQ、AMQ 和JMS。 • 我们当前实施的Camel 系统具有针对FTP、SFTP 和IBM MQ 的外部合作伙伴集成实施。 • 我们在实施FTP 和SFTP 路由时没有遇到任何问题。 • 此讨论可能会演变为专门使用 IBM MQ,而不是 IBM MQ 和 JMS 组件的 Camel 实现 – 希望不会。
我们的 IBM MQ 解决方案存在问题,因为我们将 Camel 集成到的系统具有 IBM MQ 发送器和接收器实现,这些实现是在不使用 JMS 的情况下开发的(即使用 IBM MQ 的专有 IBM Java 实现)。 我的猜测是,如果我们尝试将 JMS Camel 组件与这些旧版 IBM MQ 端点结合使用,它将无法工作,但也许可以。 因此,在我们尝试创建原型来测试这种有线配置之前,是否有人遇到过这个问题?如果有的话,最终的解决方案是什么?
使用 MQ Java API 的应用程序与使用 JMS 的应用程序运行良好。 定义队列(或主题)目标时,添加
targetClient
参数并将其设置为 1,如此处 (Apache Camel) 和 此处 (IBM MQ)。
队列://qmgr-名称/队列名称?targetClient=1
这可以防止 MQ 的 JMS 类创建特定的消息头,这可能会混淆 MQ Java API 应用程序。