我是RabbitMQ的初学者,我从RabbitMQ官方网站的必需品开始冒险。
现在,我已经在层中使用了代理消息器的以下模式:
Backend Server(Business logic) -> (push message) -> RabbitMQ -> Customer(receiver).
关于这个逻辑,我有一个简单的问题:如果这些物理组件放在不同的服务器上,那么Customer和RabbitMQ代理之间以及Backend Server
和RabbitMQ Broker
之间存在哪种绑定?是套接字层还是无状态HTTP连接?
说明我的想法的架构是:
Backend Server(Business logic) ->(???) -> (push message) -> RabbitMQ -> (???) Customer(receiver).
答案 0 :(得分:1)
这是一个名为AMQP
的套接字级二进制协议,版本为0-9-1
。
该规范可以在RMQ的网站上找到:https://www.rabbitmq.com/amqp-0-9-1-reference.html,您可以看到这些方法反映在例如Java API。
答案 1 :(得分:1)
消费者使用来自队列的消息,您不需要关心来自消费者的绑定。
但是,消息不会直接发布到队列,而是生产者将消息发送到交换机。交换是消息路由代理,在RabbitMQ中为每个虚拟主机定义。交换机负责将消息路由到不同的队列。交换机接受来自生产者应用程序的消息,并借助于头属性,绑定和路由键将它们路由到消息队列。
绑定是一个"链接"您设置为将队列绑定到交换。
路由键是一个消息属性。在决定如何将消息路由到队列时,交换机可能会查看此密钥(取决于交换类型)。
在RabbitMQ中,有四种不同类型的交换,使用不同的参数和绑定设置以不同方式路由消息。