企业建网站品牌,软件设计师教程,实验室网站开发框架,WordPress根目录是什么RabbitMQ是一个强大的消息代理#xff0c;可用于实现不同的消息传递模式。 即使有出色的教程 #xff08;使用不同的语言和框架#xff09;#xff0c;也很难理解这些概念。 在这篇文章中#xff0c;我想展示一些可以用RabbitMQ实现的不同范例#xff0c;以及为什么要为某… RabbitMQ是一个强大的消息代理可用于实现不同的消息传递模式。 即使有出色的教程 使用不同的语言和框架也很难理解这些概念。 在这篇文章中我想展示一些可以用RabbitMQ实现的不同范例以及为什么要为某些概念而苦恼。 使用队列发送和接收 最简单的方法是使用队列发送消息并让使用者从同一队列中读取数据。 没有什么可以阻止您拥有多个使用者每个使用者都可以处理队列中的消息。 消耗完一条消息后该消息将从队列中消失。 当有需要执行的任务并且哪个消费者处理任务无关紧要时这特别适合。 发布/订阅 并非所有用例都只是想消耗一条消息的方式。 通常您希望拥有多个应该全部处理所有消息的使用者。 一个示例可以是将对象存储在不同的数据存储中例如搜索索引和数据库另一种是域事件例如已提交并应由订单管理系统和库存系统处理的订单。 这需要一种发布/订阅机制RabbitMQ当然已经涵盖了这一点。 与仅使用队列相比最大的区别是在这种情况下生产者不再直接写队列。 一个称为Exchange的实例将接受邮件并将其转发到一个或多个队列。 要使用经典的发布/订阅模型您可以使用FanoutExchange将消息转发到一个或多个队列。 要连接交换和队列您需要声明一个绑定在这种情况下用于特定交换的所有消息都应转发到特定队列。 每个使用者都从专用队列中读取消息。 这也意味着您将需要为每个正在监听的使用者绑定一个绑定。 使用RabbitMQ可以使用在使用者停止监听时自动删除的队列。 这允许消费者加入和离开时具有非常动态的行为。 看我们的第一个示例您可能想知道为什么有不同的方式来发送消息发送队列和进行交换。 事实证明发送到队列确实是不可能的。 总是存在一个默认交换它仅转发消息。 此默认交换仅获取消息的某个路由键即队列名称并将它们以相同的名称放入队列中。 发布/订阅过滤 除了将消息发送到已注册进行交换的所有队列之外还可以根据路由密钥对消息进行过滤。 所有消息都被发送到一个交换机该交换机通过查看路由键来确定将消息发送到哪个队列。 如果要与路由键完全匹配请执行DirectExchange。 将DirectExchange绑定到队列时需要提供一个路由密钥该路由密钥将确定将为此队列考虑的路由密钥。 如果要分配多个路由键则可以为同一队列添加多个绑定。 您还可以提供通配符来确定哪些路由键应用于队列这是通过使用需要分层路由键的TopicExchange来完成的。 一开始这两个交流-直接交流和主题交流-可能最让我感到困惑。 当涉及主题时我正在考虑经典的发布订阅系统例如使用FanoutExchange时。 交换名称是客户端正在注册的主题。 但是这里的主题是指在现有交换机上的一种路由。 与DirectExchange相同我希望直接交换类似于第一个示例在第一个示例中您直接将消息发送到队列。 但是在这种情况下直接交换是指直接路由因此您始终需要为此提供路由密钥。 如果您想进一步了解各种交流请访问RabbitMQ网站上的教程 。 翻译自: https://www.javacodegeeks.com/2018/03/messaging-with-rabbitmq-2.html