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

3d打印网站开发仙桃城市建设投资公司网站

3d打印网站开发,仙桃城市建设投资公司网站,高校微信网站建设情况汇报,深圳龙岗网站建设公司RabbitMQ的消息如何实现路由 RabbitMQ是一个基于AMQP协议实现的分布式消息中间件,AMQP具体的工作机制是生产者将消息发送到RabbitMQ Broker上的Exchange交换机上,Exchange交换机将收到的消息根据路由规则发给绑定的队列(Queue)&am…

RabbitMQ的消息如何实现路由

  • RabbitMQ是一个基于AMQP协议实现分布式消息中间件,AMQP具体的工作机制是生产者将消息发送到RabbitMQ Broker上的Exchange交换机上,Exchange交换机将收到的消息根据路由规则发给绑定的队列(Queue),然后再将消息投递给订阅了该队列的消费者,从而完成消息的异步通讯

  • Exchange是一个消息交换机(消息路由规则的核心组件),可定义消息路由规则(即消息应该路由到哪个队列);Queue表示消息的载体,每个消息可以根据路由规则路由到一个或多个队列中
    在这里插入图片描述

  • Exchange负责接收生产者的消息,并将消息路由到消息队列,而消息的路由规则由ExchangeType和Binding决定

  • Binding表示Queue和Exchange之间的绑定关系,每个绑定关系存在一个BindingKey,通过这种方式相当于在Exchange中建立一个路由关系表

  • 生产者发送消息时,需要声明一个routingKey(路由键),Exchange获取到routingKey之后,根据routingKey和路由表中的BindingKey进行匹配,而匹配的规则是通过交换机类型ExchangeType来决定的

  • 在RabbitMQ中,有三种类型的交换机:Direct 、Fanout 、Topic
    1)Direct Exchange(直连交换机):具有路由功能的交换机绑定到此交换机时需要指定一个routingKey,交换机发送消息时需要routingKey,会将消息发送到对应的队列,即 routingKey 和 BindingKey完全一致,相当于点对点的发送
    2)Fanout Exchange(扇形交换机):广播机制,这种方式不会基于routingKey来匹配,而是将消息广播给绑定到当前Exchange上的所有队列上,速度最快,即在直连交换机的基础上增加模式匹配,即对routingKey进行模式匹配,* 代表一个单词,# 代表多个单词
    3)Topic Exchange(主题交换机):正则表达式匹配,根据routingKey使用正则表达式进行匹配,符合匹配规则的Queue都会收到该消息
    4)首部交换机(Headers Exchange):忽略routingKey,使用Headers信息(一个Hash的数据结构)进行匹配,优势在于可以有更多更灵活的匹配规则

如何保证RabbitMQ中的消息可靠传输

  • 在RabbitMQ的整个消息传递过程中,有三种情况会存在消息丢失:
    1)生产者将消息发送到RabbitMQ Server的过程中
    从生产者发送消息的角度来说,RabbitMQ提供了一个Confirm(消息确认)机制,生产者发送消息到Server端以后,如果消息处理成功,Server端会返回一个ack消息。客户端可以根据消息的处理结果来决定是否要做消息的重新发送,从而确保消息一定到达RabbitMQ Server上
    2)RabbitMQ Server收到消息后在持久化之前宕机,从而导致数据丢失
    从RabbitMQ Server端来说,可以开启消息的持久化机制,即收到消息之后持久化到磁盘中
    设置消息的持久化有两个步骤:
  • 创建Queue的时候设置为持久化
  • 发送消息的时候,将消息投递模式设置为持久化投递
    即便设置了持久化消息,但是仍有可能会出现,消息刷新到磁盘之前,RabbitMQ Server宕机导致消息丢失的问题,为了确保万无一失,需要结合Confirm消息确认机制一起使用
    3)消费端收到消息还没来得及处理就宕机,导致RabbitMQ Server认为该消息已经签收
    从消费端的角度来说,我们可以将消息的自动确认机制修改为手动确认,即消费端只有手动调用,消息确认方法才表示消息已经被签收,这可能会造成重复消费的问题,所以这里需要考虑幂等性的设计
    如:为避免MQ重复消费导致数据多次被修改的问题,可以在接受到MQ消息时,将消息通过setnx命令写入到Redis中,一旦消息被消费过,就不会在消费

RabbitMQ如何实现高可用

RabbitMQ高可用实现方式有两种:

  • 第一种:普通集群,在这种模式下,一个Queue的消息只会存在集群的一个节点上,集群中的其他节点会同步Queue所在节点的元数据,消息在生产和消费时,不管请求发送到集群的哪个节点,最终都会路由到Queue所在节点上去存储和拉取消息,这种方式并不能保证Queue的高可用性,但可以提升RabbitMQ消息的吞吐能力
  • 第二种:镜像集群,即集群中的每个节点都会存储Queue的数据副本,在每次生产消息时,都需要将消息内容同步给集群中的其他节点,这种方式能够保证Queue的高可用性,但集群副本之间的同步会带来性能的损耗
    另外,由于每个节点都保存了副本,我们还可以通过HAProxy实现负载均衡

多线程异步和MQ有什么区别

在这里插入图片描述

http://www.yayakq.cn/news/724989/

相关文章:

  • 中国网站备案查询系统网站开发的技术路线
  • 网站推广项目微商城平台哪个好
  • 汕头seo外包平台网站导航如何优化
  • 网站备案还要买幕布东莞设计公司有哪些
  • 建站节网络营销典型案例
  • 无锡新区网站制作wordpress 登陆后跳转首页
  • 学校网站建设重要性nginx wordpress动静分离
  • 网站备案关闭影响排名网站底部样式
  • 网站建设推广的方法做网站时为什么导航时两行字
  • 网站建设成本核算营销网络建设将给三夫户外带来哪些有益的影响?
  • 广州网络公司建站阳西住房和城乡规划建设局网站
  • 网站技术实现方案江苏省建设厅网站 杨洪海
  • 怎么做素材网站网站购物车建设
  • 宣传网站怎么做电商网站有哪些使用场景
  • 做网站营销公司有哪些青海省制作网站专业
  • 佛山企业快速建站网站模板怎么用呢
  • 长沙最新招聘信息最新消息什么是seo优化推广
  • 站长统计网站大全建行官方网站 - 百度
  • 网站建设包括做网站视频是什么专业
  • 网站维护工作是做啥网站建设工作室拍照
  • python怎么做视频网站沈阳高端网站建设
  • 建设网站时的故障分类物流专线做网站
  • 网站设计中的js是什么建筑网站转发
  • 研究生核心课程建设网站wordpress 分类目录字数
  • 四川门户网站建设管理规定高端企业网站建设方案
  • 手机端网站源码怎么开发手机页面
  • 怎么才可以做网站专业做相册书的网站
  • 婚礼网站有哪些wordpress5导航图标
  • 怎么制作网站封面微信开发一个小程序多少钱
  • 做企业云网站的企业多城市网站设计