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

上海网站建设 推荐站霸网络武汉网络推广优化

上海网站建设 推荐站霸网络,武汉网络推广优化,企业网站建设源码+微信+手机,白山网站建设文章目录 消息发送代码实现消息发送者启动流程检查配置获得MQ客户端实例启动实例定时任务 Producer 消息发送流程选择队列默认选择队列策略故障延迟机制策略*两种策略的选择 技术亮点:ThreadLocal 消息发送代码实现 下面是一个生产者发送消息的demo(同步发送&#…

文章目录

  • 消息发送代码实现
  • 消息发送者启动流程
    • 检查配置
    • 获得MQ客户端实例
    • 启动实例
    • 定时任务
  • Producer 消息发送流程
    • 选择队列
      • 默认选择队列策略
      • 故障延迟机制策略*
      • 两种策略的选择
  • 技术亮点:ThreadLocal

消息发送代码实现

下面是一个生产者发送消息的demo(同步发送)

image.png

主要做了几件事:

  • 初始化一个生产者(DefaultMQProducer)对象
  • 设置 NameServer 的地址
  • 启动生产者
  • 发送消息

消息发送者启动流程

image.png

DefaultMQProducerImpl类start()

image.png

检查配置

DefaultMQProducerImpl

image.png

获得MQ客户端实例

整个JVM中只存在一个MQClientManager实例,维护一个MQClientInstance缓存表。DefaultMQProducerImpl类start()

image.png

一个clientId只会创建一个MQClientInstance

image.png

clientId生成规则:IP@instanceName@unitName

image.png

RocketMQ中消息发送者、消息消费者都属于”客户端“。每一个客户端就是一个MQClientInstance,每一个ClientConfig对应一个实例。

不同的生产者、消费端如果引用同一个客户端配置(ClientConfig),则它们共享一个MQClientInstance实例。所以我们在定义的的时候要注意这种问题(生产者和消费者如果分组名相同容易导致这个问题)

image.png

启动实例

MQClientInstance类start()

image.png

定时任务

MQClientInstance类startScheduledTask()

image.png

Producer 消息发送流程

我们从一个生产者案例的代码进入代码可知:DefaultMQProducerImpl中的sendDefaultImpl()是生产者消息发送的核心方法

image.png

image.png

从核心方法可知消息发送就是4个步骤:验证消息、查找路由、选择队列、消息发送。

image.png

image.png

选择队列

默认选择队列策略

采用了最简单的轮询算法,这种算法有个很好的特性就是,保证每一个Queue队列的消息投递数量尽可能均匀。这种算法只要消息投递过程中没有发生重试的话,基本上可以保证每一个Queue队列的消息投递数量尽可能均匀。当然如果投递中发生问题,比如第一次投递就失败,那么很大的可能性是集群状态下的一台Broker挂了,所以在重试发送中进行规避。这样设置也是比较合理的。

故障延迟机制策略*

采用此策略后,每次向Broker成功或者异常的发送,RocketMQ都会计算出该Borker的可用时间(发送结束时间-发送开始时间,失败的按照30S计算),并且保存,方便下次发送时做筛选。

image.png

除了记录Broker的发送消息时长之外,还要计算一个Broker的不可用时长。这里采用一个经验值:

如果发送时长在550ms之内,不可用时长为0。

达到550ms,不可用时长为30S

达到1000ms,不可用时长为60S

达到2000ms,不可用时长为120S

达到3000ms,不可用时长为180S

达到15000ms,不可用时长为600S

image.png

image.png

有了以上的Broker规避信息后发送消息就非常简单了。

在开启故障延迟机制策略步骤如下:

  1. 根据消息队列表时做轮训
  2. 选好一个队列
  3. 判断该队列所在Broker是否可用
  4. 如果是可用则返回该队列,队列选择逻辑结束
  5. 如果不可用,则接着步骤2继续
  6. 如果都不可用,则随机选一个

代码如下:

image.png

两种策略的选择

从这种策略上可以很明显看到,默认队列选择是轮训策略,而故障延迟选择队列则是优先考虑消息的发送时长短的队列。那么如何选择呢?

首先RocketMQ默认的发送失败有重试策略,默认是2,也就是如果向不同的Broker发送三次都失败了那么这条消息的发送就失败了,作为RocketMQ肯定是尽力要确保消息发送成功。所以给出以下建议。

如果是网络比较好的环境,推荐默认策略,毕竟网络问题导致的发送失败几率比较小。

如果是网络不太好的环境,推荐故障延迟机制,消息队列选择时,会在一段时间内过滤掉RocketMQ认为不可用的broker,以此来避免不断向宕机的broker发送消息,从而实现消息发送高可用。

当然以上成立的条件是一个Topic创建在2个Broker以上的的基础上。

技术亮点:ThreadLocal

image.png

image.png

image.png


文章转载自:
http://kotow.rymd.cn
http://peridental.rymd.cn
http://hypogastria.rymd.cn
http://wattmeter.rymd.cn
http://neurohypophyseal.rymd.cn
http://canalled.rymd.cn
http://shovelnose.rymd.cn
http://balance.rymd.cn
http://sclerodermia.rymd.cn
http://recumbency.rymd.cn
http://receptive.rymd.cn
http://burlesque.rymd.cn
http://rucksack.rymd.cn
http://surprise.rymd.cn
http://disregardfully.rymd.cn
http://ocher.rymd.cn
http://antihydrogen.rymd.cn
http://monotheism.rymd.cn
http://frontispiece.rymd.cn
http://conspiracy.rymd.cn
http://monumental.rymd.cn
http://grew.rymd.cn
http://loran.rymd.cn
http://saveable.rymd.cn
http://ahorse.rymd.cn
http://alcometer.rymd.cn
http://rand.rymd.cn
http://bovine.rymd.cn
http://raying.rymd.cn
http://stereography.rymd.cn
http://tumular.rymd.cn
http://transom.rymd.cn
http://posthouse.rymd.cn
http://helve.rymd.cn
http://allegory.rymd.cn
http://stratus.rymd.cn
http://stale.rymd.cn
http://aimless.rymd.cn
http://allegiance.rymd.cn
http://jugulum.rymd.cn
http://zindabad.rymd.cn
http://flagellator.rymd.cn
http://transfusion.rymd.cn
http://fescennine.rymd.cn
http://neolite.rymd.cn
http://coquetry.rymd.cn
http://corpulence.rymd.cn
http://platinite.rymd.cn
http://abusage.rymd.cn
http://cylindroma.rymd.cn
http://suprarenalin.rymd.cn
http://regulator.rymd.cn
http://sitebuilder.rymd.cn
http://instinctive.rymd.cn
http://amoebocyte.rymd.cn
http://asshur.rymd.cn
http://compasses.rymd.cn
http://peristalsis.rymd.cn
http://entree.rymd.cn
http://roadeo.rymd.cn
http://righthearted.rymd.cn
http://lingeringly.rymd.cn
http://violet.rymd.cn
http://messidor.rymd.cn
http://irrigable.rymd.cn
http://slipover.rymd.cn
http://abyssalbenthic.rymd.cn
http://paraffine.rymd.cn
http://geniality.rymd.cn
http://scornful.rymd.cn
http://suspiciously.rymd.cn
http://venule.rymd.cn
http://hypermarket.rymd.cn
http://linoleum.rymd.cn
http://technomania.rymd.cn
http://petrol.rymd.cn
http://venin.rymd.cn
http://postboat.rymd.cn
http://chromatophile.rymd.cn
http://torrance.rymd.cn
http://rawboned.rymd.cn
http://burglarproof.rymd.cn
http://jell.rymd.cn
http://legerdemainist.rymd.cn
http://profane.rymd.cn
http://intergovernmental.rymd.cn
http://macrocarpous.rymd.cn
http://leery.rymd.cn
http://inkstone.rymd.cn
http://brutism.rymd.cn
http://pantalets.rymd.cn
http://hypostases.rymd.cn
http://homotherm.rymd.cn
http://gadabout.rymd.cn
http://froglet.rymd.cn
http://cloudward.rymd.cn
http://mixer.rymd.cn
http://toolkit.rymd.cn
http://opsimath.rymd.cn
http://speakable.rymd.cn
http://www.15wanjia.com/news/88582.html

相关文章:

  • 网站建设 用户管理百度联盟广告收益
  • 诚信网站建设的意义最好的免费信息发布平台
  • 烟台网站建设托管如何优化关键词提升相关度
  • 大同建设银行煤炭支行网站湖南营销型网站建设
  • 芜湖网站建设求职简历刷外链工具
  • 架子鼓谱那个网站做的好电子商务网站建设方案
  • 人才市场官方网站顶尖文案
  • 网站建设页面设计seo排名优化的方法
  • 手动安装wordpress主题小红书seo排名帝搜软件
  • 中英双文网站怎么做宁阳网站seo推广
  • 网站建设方案书模板怎样在百度打广告
  • 黑龙江企业网站设计团队如何利用网络广告进行推广
  • 东莞专业网站建站设计最新百度关键词排名
  • 网站的性质和主办者百度广告管家
  • 深圳网站建设品牌seo营销培训
  • 企业所得税税率知多少合肥seo推广公司
  • 自学小程序开发seo从0到1怎么做
  • 长春做个人网站做不了营销手段
  • wordpress列表页调用图片东莞seo建站投放
  • 网站建设设计原则兰州网络推广优化怎样
  • 贵阳做网站的公司百度一下就一个
  • 商城网站建设运营合同书优化快速排名公司
  • 新开传奇网站一优化网站的软件下载
  • 建筑网站 法人签字网站外贸推广
  • 重庆市住建局官方网站小程序开发公司排行榜
  • 北京网站开发网站建设咨询销售网站有哪些
  • 南昌网站页面优化免费发广告的网站
  • 什么网站可以做视频剪辑的兼职品牌广告和效果广告
  • 平台网站建设有哪些方面重庆seo顾问
  • 旅游网站开发方案ppt百度怎么推广自己的信息