@RabbitMQ知识点,一篇搞定( 二 )
文章图片
文章图片
此方式会忽略 routing key , 把消息分派给所有连接的 queue 。
最常见的场景就是消息广播 。
注意 , 此方式是 exchange 广播给 queue , 不是 queue 广播给 consumer 。queue 到 consumer 还是轮询的方式 。3.3 Topic 主题
routing key 与 binding key 进行模式匹配 。Routing key == Pattern in binding key
RabbitMQ 使用 * 和 # 这2个通配符 。
* - 匹配一个词 。
# - 匹配 0 个或多个词 。
文章图片
文章图片
routing key 为 logs.error 的消息 , 匹配 binding key -- logs.error 和 logs.* , 所以消息会进入 "only error" 和 "alllogs" 。
文章图片
文章图片
routing key 为 logs.success 的消息 , 匹配binding key -- #success 和 logs.* , 所以消息会进入 "only success" 和 "alllogs" 。
这种形式有非常多的应用场景 , 可以用于发布-订阅模式、将相关数据分发给期望的 worker 等等 。3.4 Header
一种特殊类型的 exchange , 基于消息头中的 key 进行路由 。
使用这种方式后 , 就会忽略消息的 routing key 属性 。
对一个 header exchange 创建 binding 时 , 可以对一个 queue 绑定多个 header , 这种情况下 , 消息生产者需要告诉 RabbitMQ 匹配哪些 key , producer 可以指定一个标识 x-match , 值可以是:
any - 只有一个值应该匹配 。
all - 所有值都必须匹配 。4. 消息确认
消息到达目的地之后 , broker 应该从队列中将其删除 , 这是为了防止消息过多导致溢出 。
删除消息之前 , broker 必须得到确认通知 。
有 2 种通知方式:
自动通知:只要 consumer 接收到消息即可 , 不管是否处理完成 。
【@RabbitMQ知识点,一篇搞定】明确显示通知:只有在 consumer 发送回来一个确认信息后才可以 , 这样保证 consumer 处理完成后再删除 。
推荐阅读
- 『手机』手机怎么安装 flash 插件
- 『』5G如何玩转频谱?这一篇说透了
- 「处理器」2020年游戏本怎么买?看这一篇文就够了
- 「太平洋电脑网」2020年游戏本怎么买?看这一篇文就够了
- 『篇文章』微信付费阅读推出两个月后怎么样了?有人一篇文章收入 23 万元
- []图解https演变以及各种加密解密过程,一篇就够看不懂你打我
- 【HBase】Apache HBase内核深度剖析
- 『小龙龙飞飞飞』图解https演变以及各种加密解密过程,一篇就够看不懂你打我
- #华为荣耀#差价300元 荣耀Play 4Tu002F4T Pro手机有啥区别?一篇看懂
- 【新榜】一篇文章收入近万,数千人付费!微信付费阅读如何养活网文作者?
