美文网首页
RabbitMq的官方文档翻译(教程3)

RabbitMq的官方文档翻译(教程3)

作者: katkrazy | 来源:发表于2017-11-14 19:44 被阅读0次

发布/订阅模式

在之前的教程中,我们创建了一个工作队列。使用工作队列可以使每条消息都能准确的传递给一个消费者。在这一部分,我们要做一些完全不同的事情——我们会把消息传递给多个消费者,这就是发布订阅模式。

Exchanges

在之前的部分,我们通过队列来进行收发消息,现在我们要介绍rabbit的完整消息模型。

快速回顾一下上节教程的内容:

一个生产者发送消息

一个队列缓存消息

一个消费者接收消息

现在的这个消息模型的核心思想就是生产者不会直接向队列发送消息,事实上,生产者甚至不会知道消息是否被传递给了队列。

生产者只能把消息发送给一个exchange。exchange是一个非常简单的东西。一方面,他接收从生产者过来的消息,另一方面,他把这些消息推送到队列里。exchange必须非常明确接收到的消息要怎么处理,是否应该把消息推送给某个特别的队列,还是推送给很多队列,或者这个消息是否应该被丢弃,这些规则在exchange type里定义了。

exchange

exchange 的类型有这几种:direct, topic, headers, fanout

我们重点讲一下最后一种,广播模式。我们创建一个叫logs的exchange。

创建exchange

这个广播的exchange非常简单,像你猜的那样,他只是把他所接收到的消息广播给所有他知道的队列。

匿名的exchange

之前我们对exchange一无所知,但是我们仍然可以把消息发送给队列,这是因为我们使用了默认的exchange,通过一个空支付穿的形式定义的参数。就是下面这张图的第一个参数。

匿名的exchange

现在我们可以用我们刚创建的叫logs的exchange来代替这个匿名的。

临时队列

你应该记得之前我们使用的队列都有一个特别的名字。给队列定义一个名字对我们来说十分重要,我们需要给消费者们指明一样的队列。包括生产者消费者之间的互相工作。

但是现在我们的程序好像不是这样。我们想要接收所有的日志消息,不是这些消息的一个子集。我们也只对当前的消息流感兴趣。

有两点要做的,第一点,当我们连接上rabbit之后,我们需要刷新,清空队列,用一个随机的名字或者rabbit服务器生成的随机名字来创建一个队列。第二,当我们把某个消费者断开连接之后,我们需要自动删除相应的队列。

String queueName = channel.queueDeclare().getQueue();

这样就创建了一个不持久、连接独有的、自动删除的队列。

随机名字就像amq.gen-JzTY20BRgKO-HjmUJj0wLg.

绑定

绑定

我们已经创建了一个exchange了,接下来我们要告诉这个exchange去把消息发送给我们的队列。exchange和队列之间的关系就叫做绑定。

第一个参数是队列名字,第二个是exchange名

总结

最终效果图

生产者和之前的程序没什么不同,最重要的变化是我们现在发送消息是发送到我们叫logs的exchange上而不是之前的匿名exchange。我们需要提供一个routingKey(路由key)。

生产者

如果这个exchange没有绑定任何队列的话,消息都会丢失。不过我们现在还没有消费者在监听,所以我们可以安全的丢弃消息。

消费者

编译运行略

翻译自

相关文章

  • RabbitMq的官方文档翻译(教程3)

    发布/订阅模式 在之前的教程中,我们创建了一个工作队列。使用工作队列可以使每条消息都能准确的传递给一个消费者。在这...

  • RabbitMQ中文文档01 - 目录

    RabbitMQ 教程 本文档是翻译自官方的文档,如果有哪部分翻译的不恰当,您可以直接在评论中指出。 文档之前是写...

  • RabbitMq的官方文档翻译(教程1)

    Introduction RabbitMq接收并传递消息,你可以把它当做一个邮局。当你把信件放到邮箱里的时候,你能...

  • RabbitMq的官方文档翻译(教程2)

    场景2:单发送多接收 使用场景:一个发送端,多个接收端,如分布式的任务派发。为了保证消息发送的可靠性,不丢失消息,...

  • 消息服务 - RabbitMQ 基础入门

    rabbitmq RabbitMQ官方入门教程 本文算是实现对入门教程的 java版本翻译吧。本文中演示代码地址 ...

  • [React Native]资料

    React Native 官方文档官方文档中文翻译(中文网)官方文档中文翻译(极客学院)官方文档的入门教程是写一个...

  • 电子书单列表

    网络爬虫教程 Scarapy官方教程翻译篇 Scarapy官方教程翻译篇 Python3开发网络爬虫

  • pycaffe使用

    pycaffe简明文档Caffe for Python 官方教程(翻译) pycaffe使用教程 caffe添加C...

  • Java 第三方资源收集

    mybatis官方文档翻译 mybatis-spring官方文档翻译 kafka 官方文档翻译

  • rabbitmq基础配置中文说明文档

    本文为官方文档翻译版本 rabbitmq3.7.5版本,原地址:https://github.com/rabbit...

网友评论

      本文标题:RabbitMq的官方文档翻译(教程3)

      本文链接:https://www.haomeiwen.com/subject/etnfvxtx.html