direct exchange 同一个 routing key 可以绑定多个 queue,当给这个routing key发消息时,所有 queue 都会投递。这个行为对于一些场景不适用,有时我们希望只有一个 queue 收到消息。x-random 就是解决这个问题的。

这个 exchange 之前是第三方实现的,现在在官方给的 3.7.3(2018-01-30发布) 已经自带了,但仍需要人工激活。升级 rabbitmq-server 后手工执行:

rabbitmq-plugins enable rabbitmq_random_exchange

激活后在 web console 就可以看到这种 exchange 了:

测试:

import asyncio
import tracebackimport asynqpasync def test(case_id):def listen(id):def callback(msg):print('[{}] [{}] Received: {}'.format(case_id, id, msg.body))msg.ack()return callbacktry:connection = await asynqp.connect('localhost', 5672, username='guest', password='guest')channel = await connection.open_channel()exchange = await channel.declare_exchange('rnd.exchange', 'x-random')for i in range(0,10):queue = await channel.declare_queue('test.queue_%s' % i)await queue.bind(exchange, 'routing.key')await queue.consume(listen(i))async def send_msg():for i in range(0, 50):msg = asynqp.Message({'hello': '%s world %s, random exchange'%(case_id, i)})exchange.publish(msg, 'test.queue')await asyncio.sleep(1)asyncio.ensure_future(send_msg())except Exception as ex:traceback.print_exc()if __name__ == '__main__':loop = asyncio.get_event_loop()loop.run_until_complete(asyncio.wait([test('A'), asyncio.sleep(10)]))

效果:

[A] [5] Received: b'{"hello": "A world 0, random exchange"}'
[A] [6] Received: b'{"hello": "A world 1, random exchange"}'
[A] [1] Received: b'{"hello": "A world 2, random exchange"}'
[A] [8] Received: b'{"hello": "A world 3, random exchange"}'
[A] [3] Received: b'{"hello": "A world 4, random exchange"}'
[A] [4] Received: b'{"hello": "A world 5, random exchange"}'
[A] [6] Received: b'{"hello": "A world 6, random exchange"}'
[A] [8] Received: b'{"hello": "A world 7, random exchange"}'
[A] [5] Received: b'{"hello": "A world 8, random exchange"}'
[A] [2] Received: b'{"hello": "A world 9, random exchange"}'

可见消息会投递到随机选择的某个 queue。

random-exchange 的代码:https://github.com/rabbitmq/rabbitmq-random-exchange

注意:publish 提供的 routing key 并没有处理,不论提供什么 routing key  都会对所有绑定到该 exchange 的 queue 推送消息,所以效果相当于 fanout + random。不实用。

这个

转载于:https://www.cnblogs.com/inshua/p/8417021.html

rabbitmq3.7.3 发布了一个新的 exchange x-random相关推荐

  1. 鸿蒙系统越狱,Unc0ver越狱团队为其工具发布了一个新更新

    Unc0ver越狱团队为其工具发布了一个新更新,该更新修复了多个错误并提高了平台的整体性能.在团队决定推出v5.2的越狱工具后的一个月,最新更新就发布了.我们将在一开始就明确指出,最新更新并未带来对您 ...

  2. 今天发布了一个新的网站矩阵www.wimatrix.cn

    关于科技生活新知的,digg类型,欢迎朋友们来访问,并提出宝贵的意见 网址是 http://www.wimatrix.cn 转载于:https://www.cnblogs.com/liugod/arc ...

  3. NLM 公布了一个新的重新设计的 PubMed 数据库

    经常使用 PubMed 的童鞋可能已经发现,美国国家医学图书馆(NLM)在今年 10 月份左右发布了一个新的重新设计的版本以取代 PubMed 数据库的现有版本,新版本现在已经上线,可以通过下面的链接 ...

  4. 将来用NFC也能付支付宝、微信里的钱?NFC Forum发布一项新规范

    近日,据NFCworld报道,NFC Forum发布了一个新的候选规范,使得基于二维码的移动支付服务更容易添加NFC功能,让支付服务供应商和消费者有机会利用简单.安全的基于NFC的支付解决方案在全球范 ...

  5. 对抗人脸识别的一个新方法:隐藏身份、随机换脸

    作者:杨晓凡 来源:AI科技评论(ID:aitechtalk) AI 科技评论按:人脸识别技术已经进入了大规模应用,个人数据的隐私问题也得到越来越多关注,针对隐私保护.躲避和攻击人脸识别系统的研究也陆 ...

  6. 如何系统地自学python100天_Github上发布了一个Python学习秘笈,从萌新到王者的100天Python学习之旅...

    北京千锋互联科技有限公司成都分公司骆昊(jackfrued)在Github上发布了一个Python学习秘笈,从萌新到王者的100天Python学习之旅. 简单的说,Python是一个"优雅& ...

  7. 谷歌新发布了一个精确标注动作的数据集,堪称ImageNet视频版

    作者: Chunhui Gu & David Ross 编译:魏子敏,龙牧雪,谭婧 就在昨天,谷歌blog发布了一个堪比"视频版"ImageNet的数据集-AVA(A Fi ...

  8. Colab不好用,有人花两年开发了一个新notebook,支持实时协作还更快

    机器之心报道 机器之心编辑部 工具不好用就自己开发一个,「不将就」的开发者就是这么任性. 市场上现有的数据科学 notebook 工具都有很多痛点,比如版本控制.可复现性.协作体验等,与其他工具配合使 ...

  9. VIL-100: 一个新的车道线检测数据集和基线模型(ICCV2021)

    作者丨StrongerTang@知乎 来源丨https://zhuanlan.zhihu.com/p/411156533 编辑丨3D视觉工坊 之前写过一篇车道线检测的综述,得到了一些朋友的认可,也因此 ...

最新文章

  1. ui设计的文字怎样提高设计感呢?
  2. 在php中存redis数据,redis缓存都存哪些数据
  3. 深度探索c++对象模型读书笔记:Data语意学-Data Member的绑定
  4. python 回归去掉共线性_以IPL数据集为例的线性回归技术概述
  5. Cache相关基本概念理解
  6. 当前订单不支持只花呗支付是什么意思_双十一购物季活动购物金叠加规则是什么,女装促销汇网...
  7. php归档函数(按时间)实现
  8. 米莱狄的机器人是_王者荣耀2.22更新:米莱狄机器人化身超级兵,狂铁将成T1级战士...
  9. mybatis insert插入成功返回0_mybatis添加客户
  10. Linux技术学习要点,您掌握了吗---初学者必看
  11. linux下抓包工具 wireshark,网络抓包工具Wireshark的简单使用
  12. 掌业宝服务器维护升级,奇游联机宝APP焕新升级 主机加速多设备各享最优区服...
  13. 【黑马Bootstrap笔记】Bootstrap快速入门
  14. linux定时备份Mysql
  15. Excel2016 文件运行宏,出现可能是因为该宏在此工作簿中不可用,或者所有的宏都被禁用
  16. 千方百剂创建账套服务器文件,千方百剂各工具使用.doc
  17. 减肥测试用什么软件,该减肥了吗?教你用手机App测量体脂率
  18. YS-F4Pro开发板第四章:开发环境搭建【IAR和KEIL区别】【cube软件】【ST-Link和Jlink】
  19. 整型数据分类及其取值范围
  20. EverEdit - 值得关注的国产原创开发的免费高效优秀的文本与代码编辑器

热门文章

  1. FFmpeg源代码结构图 - 编码
  2. c语言字符串反转栈,【C语言】利用栈将数组中字符串逆序
  3. linux开启和关闭防火墙
  4. PowerDesigner生成的建表脚本中如何把对象的双引号去掉
  5. bootstrap-table 树形结构
  6. zTree根据ID选中节点
  7. 【NOIP2013】【Luogu1969】积木大赛(贪心,差分)
  8. 第二章 ASP.NET MVC (视图传值到控制器)
  9. https://www.nowcoder.com/acm/contest/107/F
  10. [leetcode]5340. 统计有序矩阵中的负数