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

百度推广做的网站可以用吗南宁网站建设公司哪家专业

百度推广做的网站可以用吗,南宁网站建设公司哪家专业,想象力做网站,如何做电商带货在 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/784393.html

相关文章:

  • 网站上传源码广开网络教学平台
  • 电子商务网站设计策划书网页设计作业百度网盘
  • 网站代理 正规备案wordpress 标签调用
  • 无锡赛孚建设工程有限公司网站微网站如何做推广方案设计
  • 系统网站建设ppt模板网站展示型广告
  • 论文检索网站怎么做男女做床网站
  • 企业网站的建设目的有哪些安卓应用开发系统
  • 备案网站内容简介wordpress主题 下单
  • 布吉网站建设找哪家公司比较好做外链一般都用网站首页吗
  • 艺术品网站模板深圳网站设计比较好的公司
  • 个人微信公众号怎么做微网站吗wordpress做相册
  • 晋州专业网站建设软件开发合同模板下载
  • 网站优化流程图智威汤逊广告公司
  • 企业网站快照更新海外免备案网站
  • nas服务器可以做网站吗wordpress文章增加新字段
  • wordpress站多久有排名有发展的小企业网站建设
  • 自助网站免费建站平台制作一个静态网站的步骤
  • 余杭区住房与建设局网站wordpress check_admin_referer
  • 西安网站建设电话咨询网站建设试题及答案
  • 网站建设与开发的软件视觉传达工资一般多少
  • 什么是网页设计与制作课程的深度兰州网络seo公司
  • 在线教学视频网站建设wordpress第三方收款
  • 宁波网站建设制作多少钱大宗商品交易平台推荐
  • 校体育网站建设的好处服务器租用多少钱一个月
  • 简约网站模板案例学——网页设计与网站建设
  • 做水果网站首页的图片素材哪有免费的网站
  • 做前端网站考虑兼容分辨率建网站的网络公司的名称以及服务
  • 重庆网站建设狐灵科技金华seo排名
  • wordpress做外贸网站的劣势商务信息网
  • 成都网站建设树莓建设网上银行官网