首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏码匠的流水账

    聊聊rocketmq的订阅关系

    序本文主要研究一下rocketmq的订阅关系报错org.apache.rocketmq.client.exception.MQClientException: The consumer group[demo-group consumer1的,时而是consumer2的,最终造成消息延时或者消息消费不到的问题小结rocketmq的订阅关系要求使用同一个consumer group的不同consumer它们对topic及tag 的订阅关系要一致,不然会造成消息未能如期消费等异常,其本质是broker端维护了key为group的ConsumerGroupInfo,而每次consumer的heartbeat则会在broker端变更同一个 group的ConsumerData信息,造成订阅关系不断被变更。 doc消费者分组(ConsumerGroup)订阅关系(Subscription)我擦,RocketMQ的tag还有这个“坑”!RocketMQ同一个消费者内消费者订阅不同Topic问题分析

    57500编辑于 2023-05-08
  • 来自专栏码匠的流水账

    聊聊rocketmq的订阅关系

    序 本文主要研究一下rocketmq的订阅关系 报错 org.apache.rocketmq.client.exception.MQClientException: The consumer group consumer1的,时而是consumer2的,最终造成消息延时或者消息消费不到的问题 小结 rocketmq的订阅关系要求使用同一个consumer group的不同consumer它们对topic 及tag的订阅关系要一致,不然会造成消息未能如期消费等异常,其本质是broker端维护了key为group的ConsumerGroupInfo,而每次consumer的heartbeat则会在broker 端变更同一个group的ConsumerData信息,造成订阅关系不断被变更。 doc 消费者分组(ConsumerGroup) 订阅关系(Subscription) 我擦,RocketMQ的tag还有这个“坑”! RocketMQ同一个消费者内消费者订阅不同Topic问题分析

    34531编辑于 2023-08-31
  • 来自专栏Deep learning进阶路

    3-2 队列

    3-2 队列 1、基本概念 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。

    51240发布于 2019-07-02
  • 来自专栏叽叽西

    lagou 爪哇 3-2 zookeeper 笔记

    zookeeper是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它实现诸如数据订阅/发布、负载均衡、命名服务、集群管理、分布式锁和分布式队列等功能 基本概念 ①集群角色 通常在分布式系统中 在不同的权限模式下,授权对象是不同的,表中列出了各个权限模式和授权对象之间的对应关系 权限 权限就是指那些通过权限检査后可以被允许执行的操作。

    53610编辑于 2022-05-17
  • 来自专栏Hank’s Blog

    3-2 矩阵的子集

    > x <- matrix(1:6,nrow=2,ncol=3) > x [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6

    70320发布于 2020-09-16
  • 来自专栏后端架构师

    硬核 | Redis PubSub 发布订阅与宅男有什么关系

    如下图所示,三个「订阅者」订阅「ChannelA」频道: 订阅 这时候,小组长往「ChannelA」发布消息,这个消息的订阅者就会收到消息「关注码哥字节,提升技术」: 发布/订阅 Pub/Sub 实战 通过频道(Channel)实现 三步走: 订阅订阅频道; 发布者向「频道」发布消息; 所有订阅「频道」的订阅者收到消息。 订阅订阅频道 使用 SUBSCRIBE channel [channel ...]订阅一个或者多个频道,O(n) 时间复杂度,n = 订阅的 Channel 数量。 进入订阅后的客户端可以收到 3 种类型的消息回复: subscribe:订阅成功的反馈消息,第二个值是订阅成功的频道名称,第三个是当前客户端订阅的频道数量。 订阅模式源码 所以模式实现的发布订阅也是通过字典来保存模式与客户端的关系,如下图所示: 基于模式实现的发布订阅原理 当使用 PUBLISH 发布消息的时候,除了发布到订阅channel的客户端以外,还会将该

    1.2K10编辑于 2022-10-28
  • 来自专栏破晓之歌

    JAVA入门3-2(未完,待续) 原

    List(序列)、Queue(队列)可重复排列有序的,Set(集)不可重复无序。list和set常用。

    42850发布于 2018-08-15
  • 来自专栏后端进阶

    RocketMQ为什么要保证订阅关系的一致性?

    朋友还跟我讲了他的消费集群中,每个消费者订阅了自己的 Topic,他的消费组中 有 c1 和 c2 消费者,c1 订阅了 topicA,而 c2 订阅了 topicB。 ,这也是为什么同一个消费组应该拥有完全一样的订阅关系的原因,而朋友在同一个消费组的每个消费者订阅关系都不一样,就出现了订阅信息相互覆盖的问题。 消费订阅注册,消息拉取,消息队列负载与重新分布机制,让大家彻底弄清 RocketMQ 消费订阅机制。 消费者订阅信息注册 消费者在启动时会向所有 broker 注册订阅信息,并启动心跳机制,定时更新订阅信息,每个消费者都有一个 MQClientInstance,消费者启动时会启动这个类,启动方法中会启动一些列定时任务 ,如果消费组的消费者信息 ConsumerGroupInfo 为空,则新建一个,从名字可知道,订阅信息是按照消费组进行存放的,因此在更新订阅信息时,订阅信息是按照消费组存放的,这步骤就会导致同一个消费组内的各个消费者客户端的订阅信息相互被覆盖

    2.2K41发布于 2019-07-30
  • 来自专栏腾讯云中间件的专栏

    TDMQ RocketMQ 版订阅关系一致性原理与实践

    订阅关系定义 订阅关系是 RocketMQ 系统中消费者获取消息、处理消息的规则和状态配置,订阅关系由消费者组动态注册到服务端,并在后续的消息传输中按照订阅关系定义的过滤规则进行消息匹配和消费进度维护。 消费者按照指定的订阅关系从 RocketMQ 服务端中获取消息并消费。 订阅关系一致性约束 订阅关系一致性要求同一消费者组内的所有消费者实例所订阅的主题必须和过滤规则完全一致。 服务端处理订阅关系 Broker 在接收到心跳后,会更新本地的订阅关系表。 ,同一个消费组下订阅的同一个主题的订阅关系是直接使用最新上报的关系,那么不同客户端上报的订阅关系不一致时服务端报错的订阅关系就会一直被相互覆盖,只会以最新上报的订阅关系为准。 3、闭环验证 修订后实时同步订阅关系一致性状态,确保消费组订阅关系符合预期。 常见问题 哪些典型场景会出现订阅关系不一致?

    46410编辑于 2025-04-30
  • 来自专栏勇哥编程游记

    两个实验让我彻底弄懂了「订阅关系一致」

    这篇文章,笔者想聊聊 RocketMQ 最佳实践之一:保证订阅关系一致。 订阅关系一致指的是同一个消费者 Group ID 下所有 Consumer 实例所订阅的 Topic 、Tag 必须完全一致。 如果订阅关系不一致,消息消费的逻辑就会混乱,甚至导致消息丢失。 1 订阅关系演示 首先我们展示正确的订阅关系:多个 Group ID 订阅了多个 Topic,并且每个 Group ID 里的多个消费者的订阅关系保持了一致。 正确的订阅关系 接下来,我们展示错误的订阅关系。 错误的订阅关系 从上图中,单个 Group ID 订阅了多个 Topic,但是该 Group ID 里的多个消费者的订阅关系并没有保持一致。 RocketMQ 4.X 源码实现就是为了和消费组的定义保持一致 ,假如订阅关系不一致,那么代码执行逻辑就会出现混乱。

    52030编辑于 2023-10-23
  • 来自专栏腾讯云中间件的专栏

    8月产品月报 | TDMQ RocketMQ 版支持手动取消订阅关系

    关于腾讯云分布式消息队列 TDMQ TDMQ 是腾讯云自主研发的消息中间件产品系列,作为分布式系统中的关键组件,具备稳定可靠、高弹性、低成本的特性,提供异步通信的基础能力,通过应用解耦降低系统复杂度,提升系统可用性和可扩展性。 TDMQ 兼容开源主流协议,包含 CKafka、RocketMQ、RabbitMQ、Pulsar、MQTT 五大子产品。提供迁移方案支持,零业务代码修改,降低迁移成本。覆盖在线场景(电商交易、社交直播等)、离线场景(大数据实时计算、离线分析等)和设备端场景(物联网、车联网等),满足金融、政务、泛互联网、教育、零售、出行等不同行业和场景的需求。

    22010编辑于 2025-09-11
  • 来自专栏勇哥编程游记

    两个实验让我彻底弄懂了「订阅关系一致」

    这篇文章,笔者想聊聊 RocketMQ 最佳实践之一:保证订阅关系一致。订阅关系一致指的是同一个消费者 Group ID 下所有 Consumer 实例所订阅的 Topic 、Tag 必须完全一致。 如果订阅关系不一致,消息消费的逻辑就会混乱,甚至导致消息丢失。 1 订阅关系演示首先我们展示正确的订阅关系:多个 Group ID 订阅了多个 Topic,并且每个 Group ID 里的多个消费者的订阅关系保持了一致。图片接下来,我们展示错误的订阅关系。 图片从上图中,单个 Group ID 订阅了多个 Topic,但是该 Group ID 里的多个消费者的订阅关系并没有保持一致。 最后的思考:假如从基础架构层面来思考,将订阅关系信息中心化来设计,应该也可以实现 ,但成本较高,对于中小企业来讲,并不合算。

    1.7K130编辑于 2023-10-11
  • 来自专栏迁移内容

    RabbitMQ:订阅模型-消息订阅模式

    订阅模型-消息订阅模式,也可以称为广播模式,生产者将消息发送到 Exchange,Exchange 再转发到与之绑定的 Queue中,每个消费者再到自己的 Queue 中取消息。 ---- 文章目录 一、RabbitMQ 订阅模型-消息订阅(Fanout)模式 1、RabbitMQ 消息订阅(Fanout)模式 2、消息订阅(Fanout)模式组成 3、消息订阅(Fanout)模式流程 - 一、RabbitMQ 订阅模型-消息订阅(Fanout)模式 1、RabbitMQ 消息订阅(Fanout)模式 订阅模型-消息订阅模式,也可以称为广播模式,生产者将消息发送到 Exchange,Exchange 2、消息订阅(Fanout)模式组成 RabbitMQ 订阅模型-消息订阅(Fanout)模式主要有以下五个角色构成: 生产者(producer/ publisher):一个发送消息的用户应用程序。 3、消息订阅(Fanout)模式流程 消息订阅(Fanout)模式流程: 消息订阅(Fanout)模式 可以有多个消费者 每个消费者有自己的 queue(队列) 每个队列都要绑定到 Exchange(交换机

    2.1K10编辑于 2022-12-28
  • 来自专栏韩曙亮的移动开发专栏

    【EventBus】EventBus 源码解析 ( 注册订阅者 | 订阅方法 | 查找订阅方法 )

    文章目录 一、EventBus 注册订阅者 二、订阅方法 三、查找订阅方法 findSubscriberMethods 方法 四、查找订阅方法 findUsingInfo 方法 五、查找订阅方法 findUsingReflectionInSingleClass : ① 获取 订阅者 集合 , 查找当前订阅类中符合条件的订阅方法集合 ; ② 遍历 订阅者 集合 , 进行事件订阅 , 保存数据 , 这些数据就是一些映射关系 /** * EventBus是Java 遍历 订阅者 集合 , 进行事件订阅 , 保存数据 , 这些数据就是一些映射关系 synchronized (this) { for (SubscriberMethod findSubscriberMethods 方法 ---- 订阅方法缓存机制 : 从缓存中获取 订阅方法 , METHOD_CACHE 缓存是一个 HashMap 集合 ; 如果订阅者有很多方法 , 如果每次订阅都要查询所有的方法 , 如果遍历一次 Activity 的所有方法 很消耗性能 ; 因此这里引入了缓存机制 ; 第一次订阅时 , 将方法都放在缓存集合中 , 如果第二次订阅 , 不用再次查找方法

    2.8K20编辑于 2023-03-29
  • 来自专栏科控自动化

    通配符订阅

    附录 A - 主题通配符 订阅可能包含特殊字符,允许您一次订阅多个主题。 主题级别分隔符用于将结构引入主题,因此可以为此目的在主题中指定。 多级通配符和单级通配符可用于订阅,但消息发布者不能在主题中使用。 主题级别分隔符 正斜杠 (/) 用于分隔主题树中的每个级别,并为主题空间提供分层结构。 当在订阅者指定的主题中遇到两个通配符时,使用主题级别分隔符非常重要。 多级通配符 数字符号 (#) 是与主题中任意数量的级别匹配的通配符。 例如,如果您订阅了 finance/stock/ibm/#,则会收到有关以下主题的消息: finance/stock/ibm finance/stock/ibm/closingprice

    3.5K10编辑于 2022-03-29
  • 来自专栏『Ts + React』项目实战

    『Dva』订阅

    查看文章一、前言本篇文章是『从零玩转 TypeScript + React 项目实战』系列文章的第 6 篇,主要介绍『Dva』中的订阅经过上一篇『Dva』异步处理,文章的介绍,了解了下 Model 当中的 还可以再 Model 中的 Effect 当中做一些异步操作,那么了解了这些内容之后,本篇要介绍一下 Model 当中剩余的部分,也就是订阅。 二、Model 中的订阅在 Model 当中是不是还剩下一个 Subscription:2.1 什么是 SubscriptionSubscription 是什么东西呢? 它呢是专门用来做订阅的,做订阅它能做什么订阅呢,这个时候去官方文档中看一下。 四、总结通过本文的学习,您可以掌握以下知识点:1.什么是 Subscription:Subscription 是 Dva 中用于订阅数据源变化的功能模块,能够监听服务器 WebSocket 连接、键盘输入

    47810编辑于 2024-12-01
  • 来自专栏玖叁叁

    Redis订阅模式的高级功能-同步订阅

    同步订阅在Redis中,订阅频道时,客户端会一直阻塞等待消息到来。如果频道中没有消息到来,客户端将一直阻塞。这种订阅方式称为同步订阅。 在一些场景下,我们可能需要异步获取订阅频道中的消息,而不是阻塞等待。 Redis提供了异步订阅的方式,可以通过以下步骤来实现:使用SUBSCRIBE channel或PSUBSCRIBE pattern方法订阅频道或模式。 创建一个新的连接,使用该连接执行其他命令,而不是在已订阅的连接上执行。 在新连接中使用BRPOP key [key ...] timeout命令在新连接中使用BRPOP key [key ...] timeout命令等待订阅频道中的消息。

    1.1K20编辑于 2023-04-15
  • 来自专栏玖叁叁

    Redis订阅模式的高级功能-模式订阅

    模式订阅模式订阅功能允许客户端订阅一类频道,而不是单个频道。模式订阅使用通配符来匹配多个频道,如下所示:PSUBSCRIBE pattern [pattern ...] :订阅一个或多个符合给定模式的频道,模式使用通配符(*和?)来匹配多个频道PUNSUBSCRIBE [pattern [pattern ...]] :取消订阅一个或多个符合给定模式的频道下面是一个模式订阅的示例:import redisimport threading# 创建Redis连接r = redis.Redis(host='localhost True: message = input("Please input your message:") r.publish('my_channel', message)# 订阅频道的方法 频道模式的退订Redis提供了两种退订模式订阅的方法,分别是退订当前模式下的所有频道和退订当前模式下的指定频道。

    1K20编辑于 2023-04-15
  • 来自专栏coding for love

    3-2 使用loader打包静态资源(图片)

    上一节我们成功打包并展示了一张图片。可是我们看到最终输出的图片名称是一串hash值,如果我们希望其展示的是原来的名称呢?可以进行如下配置:

    60630发布于 2019-06-16
  • 来自专栏韩曙亮的移动开发专栏

    【EventBus】事件通信框架 ( 订阅方法注册 | 检查订阅方法缓存 | 反射获取订阅类中的订阅方法 )

    文章目录 一、检查订阅方法缓存 二、反射获取订阅类中的订阅方法 三、完整代码示例 一、检查订阅方法缓存 ---- 注册订阅者时 , 只传入一个订阅者类对象 , 其它信息都需要通过反射获取 ; 1. 获取订阅者类 : 通过反射获取该订阅者类中的所有订阅方法 , 凡是订阅方法 , 都带有 @MySubscribe 注解 ; // 获取订阅者所属类 Class<? 查看方法缓存 : 查看方法缓存中 , 是否有该订阅者对应的 订阅类 和 订阅方法 信息 ; // 获取 Class<? 没有缓存 : METHOD_CACHE 缓存中获取的 订阅者封装类 集合 , 如果该集合为空 , 则说明这是首次获取该 订阅者类 中的 订阅方法 , 需要反射获取 Class<? * Value - 订阅者对象中所有的订阅方法的事件参数类型集合 * * 根据该订阅者对象 , 查找所有订阅方法的事件参数类型 , 然后再到 METHOD_CACHE

    4.3K20编辑于 2023-03-29
领券