AMQP - 兔子 MQ 使用

Posted

技术标签:

【中文标题】AMQP - 兔子 MQ 使用【英文标题】:AMQP - Rabbit MQ usage 【发布时间】:2013-02-24 06:40:58 【问题描述】:

这可能是一个非常基本的问题。但我有点困惑。

我知道RabbitMQAMQP 代理(意思是RabbitMQ 实现/使用AMQP)。 我使用了 RabbitMQ 提供的客户端库(jar)。这是否意味着我使用了RabbitMQ 客户端API/库“内部”使用的AMQP 协议来连接到RabbitMQ 代理?关于使用AMQP,我还有什么需要了解的吗?

或者我需要遵循不同的路线才能使用AMQP? 除了使用任何消息代理(如 RabbitMQ、Apache QPid 等)的 API 之外,开发人员如何担心使用 AMQP

【问题讨论】:

【参考方案1】:

我使用了 RabbitMQ 提供的客户端库(jar)。这是否意味着我使用了 RabbitMQ 客户端 API/库“内部”使用的 AMQP 协议来连接到 RabbitMQ 代理?

是的,您使用过 AMQP 协议(​​可能); RabbitMQ 内部没有使用 AMQP。它使用 AMQP 将消息从您的应用程序发送到 RabbitMQ 并从 RabbitMQ 发送到(您的)其他应用程序;或相反亦然。

或者我需要遵循不同的路线来使用 AMQP?

除了使用 API 之外,您还可以将其用作 Apache Camel 或 Spring Integration 的扩展;它更整洁,您可以在应用程序的更多部分使用它。实际上,只要您尊重协议,您如何使用并不重要。

除了使用任何消息代理(如 RabbitMQ、Apache QPid 等)的 API 之外,开发人员如何关心使用 AMQP?

AMQP 是一种协议,就像 HTTP 一样;除了 API 之外,它还定义了消息格式,并具有路由或队列等特性,由协议提供服务,而不是由实现 API 的应用程序提供服务。

【讨论】:

AMQP is a protocol, just like HTTP; besides the API it defines the message format and has features as routing or queuing being served by the protocol rather by the application implementing the API. 那么您是说开发人员在“编程”/使用代理(RabbitMQ 等)提供的 API 时“不需要”了解有关 AMQP 的任何信息? (当然,只是要知道代理 API 使用 AMQP 进行通信) 当然不是;当通过 HTTP 编程时(比如 rest web 服务)你不关心 HTTP(例如响应代码)?

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

AMQP 与 Websphere MQ

Spring AMQP v1.4.2 - 网络故障时的兔子重新连接问题

Amazon MQ 将 AMQP 消息转换为 JMS

我在春季启动中有一个兔子 amqp 侦听器,它在不关闭应用程序的情况下保持不变

Rabbit MQ

无法连接 Spring AMQP / Rabbit MQ:org.springframework.amqp.AmqpConnectException:java.net.ConnectException