当前位置: 首页 > wzjs >正文

手机网站免费建设平台合肥seo网络优化公司

手机网站免费建设平台,合肥seo网络优化公司,平和网站建设,做我女朋友好吗网站在 RabbitMQ 中,direct 和 fanout 是两种不同的 交换机(Exchange)类型,它们决定了消息如何被路由到队列。以下是它们的核心区别和适用场景:1. Direct Exchange(直连交换机)核心特点路由规则&…

在 RabbitMQ 中,direct 和 fanout 是两种不同的 交换机(Exchange)类型,它们决定了消息如何被路由到队列。以下是它们的核心区别和适用场景:


1. Direct Exchange(直连交换机)

核心特点

  • 路由规则:基于 精确匹配的 routing_key 绑定队列。

  • 工作方式

    • 生产者发送消息时指定 routing_key(如 payment.success)。

    • 交换机将消息 仅投递到与该 routing_key 完全匹配的队列

  • 绑定示例

    python

    # 队列绑定到 direct exchange,指定 routing_key
    channel.queue_bind(queue="payment_queue",exchange="direct_logs",routing_key="payment.success"  # 精确匹配
    )

适用场景

  • 点对点精确路由
    例如:订单支付成功消息(routing_key=payment.success)只发送给支付服务,日志错误消息(routing_key=error)只发送给日志服务。

  • 多消费者选择性消费
    不同消费者绑定不同的 routing_key,实现消息分类。

图示

text

Producer → [Direct Exchange] → 匹配 routing_key → 目标队列||-- routing_key="A" → Queue1|-- routing_key="B" → Queue2

2. Fanout Exchange(扇出交换机)

核心特点

  • 路由规则忽略 routing_key,广播到所有绑定的队列

  • 工作方式

    • 生产者发送的消息会被 复制到所有绑定的队列,无论 routing_key 是什么。

    • 类似广播模式。

  • 绑定示例

    python

    # 队列绑定到 fanout exchange(无需 routing_key)
    channel.queue_bind(queue="email_queue",exchange="fanout_logs"  # 无 routing_key
    )
    channel.queue_bind(queue="sms_queue",exchange="fanout_logs"  # 无 routing_key
    )

适用场景

  • 事件广播
    例如:用户注册成功后,同时通知邮件服务、短信服务、数据分析服务。

  • 多服务并行处理
    多个消费者需要同一消息的副本,各自独立处理。

图示

text

Producer → [Fanout Exchange] → 所有绑定的队列||→ Queue1|→ Queue2|→ Queue3

3. 关键区别对比

特性Direct ExchangeFanout Exchange
路由依据精确匹配 routing_key忽略 routing_key,广播到所有队列
消息副本1 条消息只路由到 1 个队列(默认)1 条消息复制到所有绑定的队列
性能更高(无消息复制)较低(消息复制开销)
典型场景精准投递(如订单支付)广播通知(如用户注册事件)

4. 如何选择?

  • 用 direct 如果:

    • 需要 选择性投递(如不同服务消费不同消息)。

    • 消息只需被 一个消费者处理(如任务分发)。

  • 用 fanout 如果:

    • 需要 广播消息(如日志收集、多服务通知)。

    • 多个消费者需要 同一消息的副本


5. 混合使用案例

实际系统中,可以组合多种交换机类型:

  1. 用户注册事件(广播)→ fanout 通知邮件、短信服务。

  2. 支付成功消息(精准)→ direct 仅发送给订单服务。

python

# Fanout 示例:广播用户注册事件
channel.basic_publish(exchange="fanout_events",routing_key="",  # 被忽略body="user_created:123"
)# Direct 示例:精准投递支付消息
channel.basic_publish(exchange="direct_orders",routing_key="payment.success",  # 必须匹配body="order_paid:456"
)

总结:

  • direct = 精准投递fanout = 广播。

  • 根据业务是否需要 消息过滤 或 全量广播 来选择。

Direct Exchange(直连交换机)

http://www.dtcms.com/wzjs/795842.html

相关文章:

  • 网站建设需要注意的问题中亿丰建设集团股份有限公司官方网站
  • 设计网站建设价格WordPress登录界面个性化
  • 重庆网站设计软件网络营销具有哪些优势和吸引力
  • 重庆网站设计生产厂家wordpress 地址跳转
  • 十堰网站优化价格网页设计怎么写
  • 网站关键词优化怎么做的商城开发建设
  • 压缩图片在线网站免费wordpress函数the_posts
  • 有声小说网站开发群晖套件做网站
  • 桃城网站建设公司重庆本地网站有哪些
  • 网站导航菜单代码内容电商网站有哪些
  • 烟台微网站建设免费logo设计在线生成器官网
  • 查公司的国家网站有哪些哈尔滨网站制作哪家好薇
  • 绿色家园网站怎么做做网站开发的需求文档
  • 仓山福州网站建设品牌营销咨询机构
  • 优秀的手机网站案例分析wordpress plugins php speedy
  • 网站seo优化排名西宁网站建设公司排行
  • 网站怎么做下拉刷新可以免费进入的网站正能量域名
  • 北京公司网站建设价格wordpress dux推送代码
  • 免费做片头的网站网站外链建设与文章发布规范
  • 外贸公司域名哪个网站申请比较好网站建设企业开发
  • 广东广东深圳网站建设建设网站的费用属于
  • 天推广人的网站app网站与普通网站的区别
  • 新乡平原新区建设局网站ppt模板简洁大方
  • 分销网站怎么做金华手机建站模板
  • 广州网站搭建费用郑州网站建设贴吧
  • 网站报备流程安徽工程建设信息网官网
  • 中国建筑设计咨询公司江门seo全网营销
  • 公司网站源码网站打开很慢怎么回事啊
  • 怎么做单位网站网站页面关键词都一样
  • 网站接单做一小说网站要花多钱