rabbitmq java文档_《RabbitMQ官方文档》订阅与发布

本文档介绍了RabbitMQ的发布/订阅模式,通过创建一个简单的日志系统来阐述。生产者不再直接向队列发送消息,而是通过交换器,其中fanout交换器将消息广播到所有绑定的队列。消费者可以创建临时队列,并通过绑定到交换器来接收消息。
摘要由CSDN通过智能技术生成

之前的教程中,我们创建了一个工作队列。在一个工作队列背后的假设是将每个任务都准确地交付给一个工作人员。在这个环节我们要做些完全不同的事情—我们将要把一个消息传递给多个消费者。这种模式被称为“发布/订阅”。

为了阐述这种模式,我们打算构建一个简单的日志系统。它由两个程序组成—第一个发出日志消息,第二个接收消息并打印出来。

在我们的日志系统中,每次运行接收者程序的副本都将收到消息。这使我们能够运行一个接收者程序,将日志导向磁盘;同时我们可以运行另一个接收者程序查看屏幕上的日志。

实际上,已发布的日志消息将被广播到所有接收者。

交换

在教程的前面部分中,我们发送和接受消息都来自一个队列,现在是时候引进一个完整的Rabbit消息模型了。

让我们快速地回顾一下在之前的教程里介绍的内容:

生产者是发送消息的用户程序。

队列是储存消息的缓存。

消费者是接收消息的用户程序。

在Rabbit消息模型中核心的思想是,生产者从不直接向一个队列发送任何消息。事实上,通常生产者甚至不知道将一个消息是否传递到了某一队列。

相反的,生产者只能向交换器(exchange)发送消息。交换器是一个非常简单的东西。它在一端从生产者接收消息,在另一端将消息发布到队列。交换器必须准确地知道它收到的消息要做什么。它应该被添加到一个特殊的队列?它应该被添加到多个队列?或者它应该被废弃?这些规则由交换类型定义。

87fdaa758330d422a7b3f2031f57bb5b.png

有许多交换类型是可用的:direct,tpic,headers和fanout。我们来关注最后一种–fanout,我们来创建一个这种类型的交换器命名为logs:

channel.exchangeDeclare("logs", "fanout");

这个fanout交换器非常简单。就像你可以从它的名字中猜到的,它仅仅是将它收到的所有消息传递到它所知的队列中去。这正是我们的日志系统所需要的。

列出交换器

你可以用有用的rabbitmqctl列出交换器:

sudo rabbitmqctl list_exchanges

在列表里会有一些

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值