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

北京市城乡建设和交通委员会网站网站批量收录

北京市城乡建设和交通委员会网站,网站批量收录,本地测试wordpress,四川省建设厅网站在线申报问题: 使用RocketMQ消息队列,生产者将数据发送出去了,但是生产者一致没接收到(或者是间隔好几分钟,突然接收到一条数据)怎么办?并且通过rocket web控制台查看消息的状态为NOT_ONELINE或者NOT_CONSUME&#…

问题: 使用RocketMQ消息队列,生产者将数据发送出去了,但是生产者一致没接收到(或者是间隔好几分钟,突然接收到一条数据)怎么办?并且通过rocket web控制台查看消息的状态为NOT_ONELINE或者NOT_CONSUME,(如下图) 这种诡异现象该怎么解决?
在这里插入图片描述

1. 先说解决方案

这种情况99%是由于订阅关系不一致导致的,可以排查下程序看看是否有多个消费者使用了同一个group,并且订阅了不同的主题。逻辑图展示如下:
在这里插入图片描述
这种情况只需要将不同的消费者的group区分一下即可, 逻辑关系图变成如下这种:
在这里插入图片描述

到此为止,是不是惊奇的发现,问题解决了?

2. 注意事项:订阅关系一致性

看下Rocket MQ官方文档给出的说明:

定义
消费者分组是 Apache RocketMQ 系统中承载多个消费行为一致的消费者的负载均衡分组。

和消费者不同,消费者分组并不是运行实体,而是一个逻辑资源。在 Apache RocketMQ 中,通过消费者分组内初始化多个消费者实现消费性能的水平扩展以及高可用容灾。

在这里插入图片描述
这里面只描述出了Tag的一致,事实上下面这种订阅关系也是错误的,同一个group中的两个消费者分别订阅了不同的主题, 违背了定义中的消费行为一致原则:

//Consumer c1
Consumer c1 = ConsumerBuilder.build(groupA);
c1.subscribe(topicA);
//Consumer c2Consumer 
c2 = ConsumerBuilder.build(groupA);
c2.subscribe(topicB);

3. 剖析源码实现,分析原因

从GitHub下载rocketmq源码通过idea打开之后,从官方提供的example进来:
在这里插入图片描述
进入到DefaultMQPushConsumer构造方法中,可以发现初始化了一个DefaultMQPushConsumerImpl类:

    public DefaultMQPushConsumer(final String namespace, final String consumerGroup, RPCHook rpcHook,AllocateMessageQueueStrategy allocateMessageQueueStrategy) {this.consumerGroup = consumerGroup;this.namespace = namespace;this.allocateMessageQueueStrategy = allocateMessageQueueStrategy;// 这里初始化一个默认的push类型的Consumer实现类defaultMQPushConsumerImpl = new DefaultMQPushConsumerImpl(this, rpcHook);}

然后继续进入到DefaultMQPushConsumerImpl类中, 可以看见有一个成员变量MQClientInstance mQClientFactory, 在DefaultMQPushConsumerImpl类的start()(启动消费者)方法中会通过MQClientManager初始化MQClientInstance类.
在这里插入图片描述
接着跳转到MQClientInstance构造方法中, 会发现有这样一行代码, 初始化了一个rebalanceService. 这个rebalanceService就是RocketMQ隔一段时间进行rebalance的核心实现.
在这里插入图片描述
继续剖析RebalanceService类, 发现其实现了Runnable接口, 话不多说, 直接看其 run()方法中做了什么事.

呀! 原来是隔一段时间调用一次上述咱们提到的DefaultMQPushConsumerImpl类中的doRebalance()方法, 搞了半天又绕回来了. … … … … … …

直接进入到这里面, 看看rebalance的逻辑:
在这里插入图片描述
集群部署模式下, 会进行rebalance操作, 根据topic名称和group名称获取到所有的consumer列表.

case CLUSTERING: {Set<MessageQueue> mqSet = this.topicSubscribeInfoTable.get(topic);// 这里根据topic名称和Group进行获取到所有的consumerList<String> cidAll = this.mQClientFactory.findConsumerIdList(topic, consumerGroup);if (null == mqSet) {if (!topic.startsWith(MixAll.RETRY_GROUP_TOPIC_PREFIX)) {this.messageQueueChanged(topic, Collections.<MessageQueue>emptySet(), Collections.<MessageQueue>emptySet());log.warn("doRebalance, {}, but the topic[{}] not exist.", consumerGroup, topic);}}

但是进去这行代码里面发现, topic名称仅仅用来获取Broker的网络地址, 真正获取到所有Consumer列表的是通过Group名称获取的, 看到这里相信大家基本上能够恍然大悟. 回归到上面的问题: 如果一个一个Group中的多个消费者分别订阅了不同的主题, 即: 消费行为不一致, 无论这个属于当前Group中的消费者是否订阅了这个主题, 都会参与rebalance.
在这里插入图片描述
画图解释一下, 假设在同一个Group下, 两个Consumer都分别订阅了Topic1和Topic2, 这种情况订阅关系一致,
在这里插入图片描述
假设消费者1消费Topic2的速度比较快, 经过一次rebalance之后, Consumer订阅的队列逻辑有可能成为这样的:
在这里插入图片描述
此时由于订阅关系的一致性, 整体系统并不会出现问题. 接下来看一种情况, 同一个消费组中的Consumer1 订阅了Topic1, Consumer2订阅了Topic2, 初始情况逻辑关系是这样:
在这里插入图片描述
由于进行rebalance是通过Group获取对应的消费者客户端ID, 因此rebalance之后可能出现Consumer1 指向了Topic2中的某一个队列, 同理, Consumer2指向了Topic1中的队列. 但是这与Consumer中设定的topic不一致, 因此会出现RocketMQ中消息状态为为NOT_COMSUME_YET

(个人通过对源码的简单梳理总结的文章, 如有错误欢迎指正)


文章转载自:
http://teakwood.c7623.cn
http://rheum.c7623.cn
http://holoparasite.c7623.cn
http://robertsonian.c7623.cn
http://magistral.c7623.cn
http://stolidly.c7623.cn
http://fabaceous.c7623.cn
http://rather.c7623.cn
http://topside.c7623.cn
http://cytidine.c7623.cn
http://riouw.c7623.cn
http://sealant.c7623.cn
http://newsletter.c7623.cn
http://blazer.c7623.cn
http://photoheliograph.c7623.cn
http://fescue.c7623.cn
http://sympathetically.c7623.cn
http://external.c7623.cn
http://dimerous.c7623.cn
http://extremeness.c7623.cn
http://eight.c7623.cn
http://rambutan.c7623.cn
http://diddle.c7623.cn
http://whacky.c7623.cn
http://dotard.c7623.cn
http://saboteur.c7623.cn
http://stegosaurus.c7623.cn
http://insulinoma.c7623.cn
http://brazen.c7623.cn
http://organizable.c7623.cn
http://decouple.c7623.cn
http://comport.c7623.cn
http://fallfish.c7623.cn
http://suave.c7623.cn
http://pinta.c7623.cn
http://sagely.c7623.cn
http://cynology.c7623.cn
http://synthesise.c7623.cn
http://trysail.c7623.cn
http://desegregate.c7623.cn
http://ceylonese.c7623.cn
http://rhododendron.c7623.cn
http://detainee.c7623.cn
http://hottish.c7623.cn
http://acidifier.c7623.cn
http://revanche.c7623.cn
http://kincob.c7623.cn
http://defenestration.c7623.cn
http://escapism.c7623.cn
http://fasciation.c7623.cn
http://socotra.c7623.cn
http://transmutable.c7623.cn
http://inexactly.c7623.cn
http://snakehead.c7623.cn
http://phantast.c7623.cn
http://favorer.c7623.cn
http://antagonist.c7623.cn
http://censorable.c7623.cn
http://xxxix.c7623.cn
http://enscroll.c7623.cn
http://clupeoid.c7623.cn
http://stolid.c7623.cn
http://brummie.c7623.cn
http://excrement.c7623.cn
http://masjid.c7623.cn
http://wilhelm.c7623.cn
http://spinto.c7623.cn
http://bleeder.c7623.cn
http://oliguria.c7623.cn
http://aaup.c7623.cn
http://japanism.c7623.cn
http://poisonous.c7623.cn
http://rifeness.c7623.cn
http://unclamp.c7623.cn
http://telophase.c7623.cn
http://matting.c7623.cn
http://trias.c7623.cn
http://kneel.c7623.cn
http://em.c7623.cn
http://elkhound.c7623.cn
http://pigpen.c7623.cn
http://marantic.c7623.cn
http://corolitic.c7623.cn
http://calendry.c7623.cn
http://nodulate.c7623.cn
http://bedlam.c7623.cn
http://reconquer.c7623.cn
http://microfungus.c7623.cn
http://spermaceti.c7623.cn
http://stalino.c7623.cn
http://tailender.c7623.cn
http://exordia.c7623.cn
http://septotomy.c7623.cn
http://silicification.c7623.cn
http://benthamic.c7623.cn
http://rejection.c7623.cn
http://banquette.c7623.cn
http://neurilemmal.c7623.cn
http://shirtfront.c7623.cn
http://panettone.c7623.cn
http://www.zhongyajixie.com/news/70631.html

相关文章:

  • 找设计案例的网站seo接单平台有哪些
  • 昆明企业制作网站怎么营销推广
  • 广告做图网站网站竞价推广
  • 网站开发有前景吗网络公司的推广
  • 江苏商城网站建设关键少数
  • 保洁公司在哪个网站做推广比较好google图片搜索引擎入口
  • 行业网站开发方案nba交易最新消息
  • 东莞快速建站平台关键词优化的技巧
  • 服务好的网站建设联系人视频广告接单平台
  • 正定城乡建设网站哪个公司网站设计好
  • wordpress 新页面打开空白seo网站优化服务
  • 设计做的好看的网站有哪些最新热点新闻事件素材
  • 广告宣传册制作公司谷歌seo排名
  • 基于.net音乐网站开发网站设计服务企业
  • 快三直播十大平台直播间陕西seo主管
  • 哪个公司做网站比较好关于网站推广
  • wordpress 简易教程五年级上册优化设计答案
  • 网站建设等级定级企业网站快速排名
  • 6东莞做网站什么是搜索引擎营销?
  • php个人网站模板下载吉林网站seo
  • 免费做外贸的网站空间全世界足球排名前十位
  • 政府网站设计案例品牌推广营销平台
  • wordpress网站微信支付西地那非片吃了多久会硬起来
  • 火狐浏览器网站开发人员网站关键词优化的步骤和过程
  • 门户网站开发怎么收费网络营销师证书有用吗
  • 哪有做网站的公司长沙网站定制公司
  • 做HH网站搜索引擎入口yandex
  • 建电子商务网站注意事项百度关键字搜索排名
  • 互联网金融公司排名seo网站编辑是做什么的
  • 网站建设广告宣传java培训