我们今天将研究Spring AMQP。
目录[ 隐藏 ]
Spring AMQP是基于AMQP的消息传递解决方案的Spring实现。Spring AMQP为我们提供了一个“模板”,作为发送和接收消息的高级抽象。我们将在今年春季AMQP中研究以下主题。教程。
我们之前的帖子中已经讨论了一些JMS概念和示例。在这篇文章中,我们将讨论AMQP协议和Spring AMQP消息传递。
AMQP代表高级消息队列协议。AMQP是用于实现MOM(面向消息的中间件)的开放标准协议。
我们有JMS API来开发企业消息系统,但为什么我们需要另一个Messaging标准。
JMS API的主要缺点或限制是互操作性,这意味着我们可以开发仅在基于Java的应用程序中工作的消息传递系统。它不支持其他语言。
AMQP解决了JMS API问题。AMQP的主要优点是它支持异构平台和消息代理之间的互操作性。我们可以用任何语言(Java,C ++,C#,Ruby等)和任何操作系统开发我们的Messaging系统; 他们仍然可以使用基于AMQP的消息代理来相互通信。
在本节中,我们将讨论JMS和AMQP协议之间的区别。
JMS Application适用于任何OS环境,但它仅支持Java平台。如果我们想使用JMS API开发以下系统架构,那么所有这些系统都应该只使用Java语言开发。
但是如果我们使用AMQP标准来开发相同的系统,那么我们可以使用任何语言开发这些系统,这意味着System-1(JAVA),System-2(C#),System-3(Ruby)和System-4(C ++) 。
JMS API仅适用于Java平台,但AMQP支持许多技术。
正如我们已经讨论过的,JMS API支持两种消息传递模型:P2P(点对点)模型和PUB / SUB(发布者/订阅者)模型。
AMQP支持五种不同的Messaging模型(或Exchange类型)
JMS消息分为3个部分:标题,属性和正文。
AMQP消息分为4个部分:标题,属性,正文和页脚。
JMS API支持5种类型的消息作为Body部分的一部分,但AMQP仅支持一种类型的消息 - 二进制(字节)消息。
Spring Framework提供Spring AMQP API,将AMQP消息代理与Spring应用程序集成,以开发企业消息系统。
在AMQP Messaging系统中,Message Publisher将消息发送到Exchange。Publisher不知道哪个队列配置到此Exchange以及哪个Consumer与此队列关联。
在配置Exchange时,我们将通过指定一些路由密钥将其映射到一个或多个队列。
AMQP Consumer连接到Queue并使用某些路由密钥监听消息。
当Publisher将邮件发送到Exchange时,Exchange使用此路由密钥并将这些邮件发送到关联的队列。当队列接收消息时,关联的消费者会自动接收这些消息。
例如,我们通过遵循上述架构实现了AMQP消息系统。
如果Publisher发送Route key = 1的消息,则此消息将路由到Queue1,然后路由到Consumer1。
如果Publisher发送路由密钥= 2的消息,则此消息将路由到Queue2,然后路由到Consumer2。
注意:最流行的AMQP协议实现的消息代理或JMS服务器是:
Spring Framework提供了两组API来处理AMQP协议服务器。Spring AMQP项目位于以下网站:
https://spring.io/projects/spring-amqp
Spring RabbitMQ AMQP API用于使用Spring Rabbit MQ服务器实现消息传递应用程序。此API由两个Spring模块开发:
此API用于使用Apache Active MQ服务器实现消息传递应用程序。此API使用带有ActiveMQ API的Spring AMQP抽象模块:
它是AMQP协议实现的基础抽象。
它是RabbitMQ实现。
它是AMQP协议实现的基础抽象。
它是ActiveMQ实现。
注意:
activemq-spring
(它不是来自Pivotal Team)。这就是Spring AMQP Messaging的全部内容。
进一步阅读:Spring RabbitMQ,Apache ActiveMQ