AMQP 与 Websphere MQ

Posted

技术标签:

【中文标题】AMQP 与 Websphere MQ【英文标题】:AMQP vs Websphere MQ 【发布时间】:2011-03-10 06:43:54 【问题描述】:

我们正在开发支持 AMQP 进行排队的应用程序。我们的一些客户正在使用 Websphere MQ。我只是想知道这两种协议在功能方面的可互换性。我正在使用celery,只要我可以编写 Websphere MQ 后端,它就可以让我抽象出较低级别的东西。我想弄清楚这将是一个多么困难的挑战。

Websphere MQ 是否提供 AMQP 功能的超集?是否有任何可能让我的生活变得困难的“特征”?

【问题讨论】:

【参考方案1】:

2015 年 6 月 23 日更新 IBM 宣布了MQ Light,这是他们对 AMQP 的实现。他们的Statement of Direction 表示,他们打算提供一些功能,以允许设计为在 MQ Light 上运行的程序在未来的某个时间点在 MQ 中运行,但尚未宣布具体时间。在撰写本文时,MQ Light 处于开放测试阶段。


通过一个简单的桥接应用程序读取一个系统并写入另一个系统,在这些系统之间移动有效负载将相对简单。它们都有队列和主题,并且可以进行显式路由。

有趣的部分包括一些有趣的概念......

映射回复目的地。尤其是动态回复目的地。 事务性 任何类型的路由都比“从这个队列/主题中提取,放到这个更复杂。例如,根据队列名称路由到多个目的地的网关。 消息级安全性。 为连接级安全映射身份。 不可能进行端到端消息加密。

因此,如果您需要的只是“从 AMQP:QUEUEA 获取,放入 WMQ:QUEUEB”的顺序,并且事务性并不重要,那么您应该轻松度过。除此之外,这完全取决于您想要做什么。

【讨论】:

可能应该发布一个问题,但是 IBM Web MQ 的本机传输是什么?我以为是 MQTT,但显然这是他们最近添加的。 它是一种专有的有线协议。作为一项规则,我喜欢开放标准,但 WMQ 的一个优势是 IBM 可以根据需要更改有线协议。因此,当他们想通过单个套接字共享多个连接并添加预读流作为性能增强时,他们很容易做到这一点,即使这意味着改变线路格式。巨大的性能影响与这些。如果他们发布了协议,这将更加困难。然而,随着开放网络上更多的异步,在某些时候可能需要支持开放协议或发布 MQ。【参考方案2】:

IBM MQ now supports AMQP 1.0 clients(包括现有的 IBM MQ Light 客户端)通过在 MQ 8.0.0.4 中引入 AMQP 通道。

【讨论】:

能否使用 8.0.0.4 中的 AMQP 通道功能将 IBM MQ 与 RabbitMQ 等其他 AMQP 产品集成? 我怀疑可能不是。 RabbitMQ 支持 AMQP 0.9 协议,而 IBM MQ 支持 AMQP 1.0。这两个协议版本不同,不能互换。即使他们都使用相同的协议级别,这两种产品都没有能力作为客户端连接到另一个供应商的服务器 - 我知道。我想也许可以编写一个您自己的客户端应用程序,使用 AMQP 0.9 与 RabbitMQ 服务器交互,并使用 AMQP 1.0 与 IBM MQ 队列管理器交互,使用所述应用程序充当两者之间的桥梁。

以上是关于AMQP 与 Websphere MQ的主要内容,如果未能解决你的问题,请参考以下文章

IBM websphere MQ 消息发送与获取

AMQP协议与RabbitMQ

Websphere安装配置与项目部署

JSF 2.0 能否与 Websphere 应用服务器版本 7.x 一起使用

RabbitMQ与AMQP协议

AMQP 客户端与同步消息的正确行为