AMQP学习小记

栏目: Redis · 发布时间: 6年前

内容简介:AMQP学习小记

阅读《RabbitMQ实战》一书第二章 理解消息通信 的读书笔记。

AMQP学习小记

消费者和生产者

  • 生产者(producer)创建消息,然后发送到代理服务器(RabbitMQ)。
  • 消息包含两部分:有效载荷(payload)和标签(label);有效载荷就是你想要传输的数据(可以是任何格式的任何内容);标签描述了有效载荷,并且RabbitMQ用它来决定谁将获得消息的拷贝。
  • 消费者(consumer)连接到代理服务器上,并订阅到队列(queue)上;当消费者接收到消息时,它只得到消息的一部分:有效载荷(标签并没有随有效载荷一同传递)。
  • 信道(channel)建立在”真实的”TCP连接内的虚拟连接;不论是发布信息、订阅队列或是接收消息,都是通过信道完成的;不使用TCP连接主要是因为对于操作系统而言建立和销毁TCP会话非常昂贵的开销;在一条TCP连接上创建多少条信道是没有限制的。

队列

  • AMQP消息路由必须有三部分:交换器、队列和绑定。生成者把消息发布到交换器上;消息最终到达队列,并被消费者接收;绑定决定了消息如何从路由器到特定的队列。
  • 消费者和生产者都可以通过queue.declare命令来创建队列。queue-name:队列名称,不指定则随机生产;exclusive:设置为true则为私有队列,只有当前消费者可以订阅;auto-delete:设置为true时最后一个消费者取消订阅将自动移除队列;passive:队列不存在时返回错误。
  • 消费者通过两种方式从特定队列中接收消息:basic.consume(消息一到达队列就自动接收,推荐的方式)和basic.get(从队列里主动获取单条消息)。
  • 当一个队列拥有多个消费者时,队列接收到的消息将以循环(round-robin)的方式发给消费者。每条信息只会发送给一个订阅的消费者。
  • 消费者接收的每一条信息都必须进行确认,可以使用basic.ack命令显式确认或在订阅队列时将auto_ack参数设置为true(一旦接收就自动确认)。如果确认前与RabbitMQ断开连接,则会重新分发给下一个订阅的消费者;如果由于bug等忘记确认的话,RabbitMQ将不会发生新的消息。如果想明确拒绝新消息的话可以使用basic.reject命令(requeue参数为true则发送给其他消费者,为false则从队列中移除)。

交换器和绑定

  • 队列通过路由键(routing-key)绑定到交换器。如果消息不匹配任何绑定模式的话,将进入“黑洞”。
  • 四种类型的交换器:direct、fanout、topic和headers。direct类型以队列名称作为routing-key;fanout类型会把消息投递所有附件在此交换器上的队列;topic支持通过“*”和“#”符号匹配消费者发送的topic消息,并投递到指定队列。

多租户模式

  • 每个RabbitMQ服务器都能创建虚拟主机(vhost),其本质是一个mini版的RabbitMQ服务器,拥有自己的队列、交换器和绑定,同时也拥有自己的权限机制。
  • vhost之间是绝对隔离的。

以上所述就是小编给大家介绍的《AMQP学习小记》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

算法设计与分析

算法设计与分析

陈慧南 / 电子工业出版社 / 2006-5 / 26.80元

《算法设计与分析:C++语言描述》内容分为3部分:算法和算法分析、算法设计策略及求解困难问题。第1部分介绍问题求解方法、算法复杂度和分析、递归算法和递推关系;第2部分讨论常用的算法设计策略:基本搜索和遍历方法、分治法、贪心法、动态规划法、回溯法和分枝限界法;第3部分介绍NP完全问题、随机算法、近似算法和密码算法。书中还介绍了两种新的数据结构:跳表和伸展树,以及它们特定的算法分析方法,并对现代密码学......一起来看看 《算法设计与分析》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具