Re: [PR] Add Share Wiki For Runtime [rocketmq-eventbridge]
2011shenlin merged PR #142: URL: https://github.com/apache/rocketmq-eventbridge/pull/142 -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@rocketmq.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org
(rocketmq-eventbridge) 04/05: Update RocketMQEventBridgeRuntimeArchitectDesign
This is an automated email from the ASF dual-hosted git repository. shenlin pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/rocketmq-eventbridge.git commit 19fc812e52dfff55e69bdf1788582f50c487fb2f Author: Artisan AuthorDate: Sun Aug 6 17:56:39 2023 +0800 Update RocketMQEventBridgeRuntimeArchitectDesign --- docs/cn/RocketMQEventBridgeRuntimeArchitectDesign | 85 +-- 1 file changed, 50 insertions(+), 35 deletions(-) diff --git a/docs/cn/RocketMQEventBridgeRuntimeArchitectDesign b/docs/cn/RocketMQEventBridgeRuntimeArchitectDesign index b4337e1..5cbb6a8 100644 --- a/docs/cn/RocketMQEventBridgeRuntimeArchitectDesign +++ b/docs/cn/RocketMQEventBridgeRuntimeArchitectDesign @@ -1,87 +1,102 @@ - 背景 +# 背景 EventBridge做为完整的实现EDA领域的基础服务,其开源第一个版本所依赖的核心运行引擎,为数据流链接工具RocketMQ Connect项目的Runtime运行时。RocketMQ Connect的Runtime虽然具备数据流转的能力,但针对事件的消费吞吐能力、事件目标的触达实时性、运行器的可观测能力等方面,对于开源EventBridge的使用者来说,无疑是存在不足的。针对上述问题,设计一款满足EDA场景下运行引擎Runtime是十分必要的。 -架构设计 +# 架构设计 目前开源版本Runtime,核心模块分为: - EventBusListerner,事件总线监听器(以下简称Listener),批量拉取事件并作本地缓存,供Transfer消费解析。 - EventRuleTransfer,事件规则转换器(以下简称Transfer), 解析并流转批量事件至指定的事件记录(包含目标信息),供Trigger拉取并推送。 - EventTargetTrigger,事件目标触发器(以下简称Trigger),将批量事件记录推送至目标端。 架构运行图如下: -[图片] + + 围绕Listerner、Transfer、Trigger,有如下关键组件: 1. Subscriber,订阅不同消息存储介质的抽象简称,用于拉取事件消息并作本地缓存,供Listener消费。 2. Observer,为动态监听目标配置(RunnerConfig)的观察者,具体有DbObserver, FileObserver, ControllerObserver。订阅者为,EventSubscriber和CirculatorContext。 3. OffsetManager,为位移管理器,用于提交事件在Transfer和Trigger完成其生命周期,所对应的消息存储介质的位移。 4. CirculatorContext,循环器上下文,用来维护Listener、Transfer、Trigger的所依赖的上下文元数据。 5. ErrorHandler,异常处理器,用于处理事件在不同阶段的消息流转,支持重试推送事件。 -设计原理 +# 设计原理 在上面架构设计模块中,我们梳理了下Runtime的核心模块及关键组件。有些同学可能会发问,为什么要这样设计?下面我们从领域建模和技术指标两个维度,浅谈核心模块和关键组件的设计原理。 -领域建模 +## 领域建模 在EventBridge中,我们定义了事件流转生命周期的若干个核心概念,有事件源、事件总线、事件规则、事件目标等。除了事件源,仅仅用来标识的是事件发送者的信息,而其他的事件总线、事件规则、事件目标则更多的是和事件消费者深度绑定的。 从一个事件消费者的角度来说,我们需要知道这个事件存储在什么地方、这个事件是基于什么样的转换规则投递出去、以及最后如何让运行引擎和事件的消费者完成链接投递? 基于以上三个问题,我们抽象出来以事件总线、事件规则、事件目标为核心领域的Listener、Transfer、Trigger三个核心模块,三个模块构成一条核心链路完成一个事件在EventBridge服务端的运行流转,而这个核心链路就是Runtime的中枢调度器。 -技术指标 -事件消费吞吐量 +## 技术指标 +### 事件消费吞吐量 Subscriber模块实现了不同存储介质对事件的长链接拉去消费,缓存在本地队列中,并以RunnerName做为消费者分组批量拉取事件消息以及批量提交位点。该模块能够确保不同事件消费者的消费隔离,进而保证事件消费的高并发。 在循环器上下文CirculatorListener中,有Listener、Transfer、Trigger所需的元数据,同时也有各模块所消费的事件记录本地缓存,从本地存储角度来说,直接提升了事件流转投递的吞吐性能。 此外,在Transfer和Trigger模块,针对CPU密集型和IO密集型分配不同参数的线程池,可进一步保证事件消费的高性能。 -事件投递实时性 +### 事件投递实时性 Listener、Transfer、Trigger为独自运行线程,相互之间的数据绑定依赖于本地的事件记录缓存,而这些缓存数据都存储在统一的循环器上下文CirculatorContext中,可以保证事件记录的实时监听于投递。 其次,循环器上下文CirculatorContext和Subscriber同时是事件目标RunnerConfig的配置内容修改的订阅者,可以实时感知事件目标的配置项修改,从而实时的完成各自元数据的更新。进一步保证事件投递的实效性。 而后,位移管理器OffsetManager,可实时协调Transfer和Trigger的事件记录流转状态,确保事件投递的完整生命周期。 -运行器的可观测 +### 运行器的可观测 ErrorHander异常处理器,会处理每个异常投递的事件消息,并做好埋点记录。与此同时,社区方面正在建设Metric基础模块,以此完善EventBridge模块的可观测能力。 -核心模块 -存储介质 +# 核心模块 +## 存储介质 在adapter包下新建storage模块,用来实现消息存储介质的多种策略实现。其中以抽象类EventSubscriber做为基类,可供不同的消息存储介质扩展实现。目前默认实现的是RocketMQEventSubscriber,后续将支持更多的存储介质实现。下图为EventSubscriber抽象类的核心接口, -[图片] + + 包含核心四个抽象方法, - refresh,监听Runner运行器的配置信息,从而动态更新事件Consumer的关键字段。 - pull,拉取事件消息 - commit,事件消息位移提交 - close,关闭指定事件消费者 以RoekctMQSubscriber为例,做为Listener的上游入口,提供消息的消费入口并转换为事件记录在本地存储,供下游Runtime模块流转。同时,内置类ConsumeWorker以runnerName做分组,实现不同的目标事件消费者隔离。而做为RunnerConfigObserver的订阅者,方便ConsumeWokrder属性的动态更新。下图是内置类ConsumeWorker的定义及核心实现: -[图片] + + 每个ConsumeWorker做为单独线程运行,会接受RocketMQEventSubscriber对其生命周期的管理,对应的入口便是refresh, pull, commit, close四个核心抽象接口,RokectMQEventSubscriber会结合RokectMQ的特性(topic管理、消息分组、位移提交)实现四个接口的特定逻辑。 -监听器 +## 监听器 监听器的实现较为简单,主要用来向Subscriber批量拉取本地队列中的事件记录,然后交给循环器上下文暂存,后续由转换器拉取转换。具体实现逻辑如下: -[图片] -转换器 + + +## 转换器 Transfer同样是个独立线程,启动后批量向CirculatorContext拉取事件记录,而后使用TransformEngine对事件进行规则过滤,而后将合法的事件转换为可投递目标的事件记录。这里TransformEngine做为关键组件,用于将关键的Transform插件加载进内存,而后组装不同投递目标的转换列表,供Transfer调用转换事件记录。 接下来,我们来看下在TransformEngine中是如何完成事件规则解析的。首先,一个标准的RunnerConfig配置信息,可以抽象定义为一个组件的三块内容,分别是:事件总线信息、事件规则转换器信息、以及事件目标触发器。以DingTalk的RunnerConfig为例,其标准JSON格式如下: -[图片] + + 而每个RunnerName在分配唯一的TransformEngine初始化时,会将RunnerConfig中组件components信息和EB所需要的插件在构造方法中加载初始化,并构建可用于转换事件记录的转换列表transformList。由DingTalk配置JSON可知,components中间部分是EB目前提供的通用transform插件,分别为EventBridgeFilterTransform和EventBridgeTransform,后续依赖业务场景将适当提供新的transform插件。下图为具体的初始化构建逻辑: -[图片] + 05/05: Rename RocketMQEventBridgeRuntimeArchitectDesign to RocketMQEventBridgeRuntimeArchitectDesign.md
This is an automated email from the ASF dual-hosted git repository. shenlin pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/rocketmq-eventbridge.git commit e67f3daefed2c4e92eda248bd1c3b93e55692dcf Author: Artisan AuthorDate: Sun Aug 6 17:57:49 2023 +0800 Rename RocketMQEventBridgeRuntimeArchitectDesign to RocketMQEventBridgeRuntimeArchitectDesign.md --- ...untimeArchitectDesign => RocketMQEventBridgeRuntimeArchitectDesign.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/cn/RocketMQEventBridgeRuntimeArchitectDesign b/docs/cn/RocketMQEventBridgeRuntimeArchitectDesign.md similarity index 100% rename from docs/cn/RocketMQEventBridgeRuntimeArchitectDesign rename to docs/cn/RocketMQEventBridgeRuntimeArchitectDesign.md
(rocketmq-eventbridge) branch main updated (c4607e5 -> e67f3da)
This is an automated email from the ASF dual-hosted git repository. shenlin pushed a change to branch main in repository https://gitbox.apache.org/repos/asf/rocketmq-eventbridge.git from c4607e5 fix api destination update new f0eae84 Add files via upload new 6ba4202 Delete EventBridge自研Runtime架构设计及实现.docx new e6967f7 Create RocketMQEventBridgeRuntimeArchitectDesign new 19fc812 Update RocketMQEventBridgeRuntimeArchitectDesign new e67f3da Rename RocketMQEventBridgeRuntimeArchitectDesign to RocketMQEventBridgeRuntimeArchitectDesign.md The 5 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference. Summary of changes: .../RocketMQEventBridgeRuntimeArchitectDesign.md | 103 + 1 file changed, 103 insertions(+) create mode 100644 docs/cn/RocketMQEventBridgeRuntimeArchitectDesign.md
(rocketmq-eventbridge) 01/05: Add files via upload
This is an automated email from the ASF dual-hosted git repository. shenlin pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/rocketmq-eventbridge.git commit f0eae849d4d0b061e608c925760ae9da754c1b15 Author: Artisan AuthorDate: Sun Aug 6 17:23:06 2023 +0800 Add files via upload --- ...\256\241\345\217\212\345\256\236\347\216\260.docx" | Bin 0 -> 1347865 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git "a/docs/cn/EventBridge\350\207\252\347\240\224Runtime\346\236\266\346\236\204\350\256\276\350\256\241\345\217\212\345\256\236\347\216\260.docx" "b/docs/cn/EventBridge\350\207\252\347\240\224Runtime\346\236\266\346\236\204\350\256\276\350\256\241\345\217\212\345\256\236\347\216\260.docx" new file mode 100644 index 000..5d62afe Binary files /dev/null and "b/docs/cn/EventBridge\350\207\252\347\240\224Runtime\346\236\266\346\236\204\350\256\276\350\256\241\345\217\212\345\256\236\347\216\260.docx" differ
(rocketmq-eventbridge) 02/05: Delete EventBridge自研Runtime架构设计及实现.docx
This is an automated email from the ASF dual-hosted git repository. shenlin pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/rocketmq-eventbridge.git commit 6ba4202a8bfc639e1f4b477da70132644425d751 Author: Artisan AuthorDate: Sun Aug 6 17:24:23 2023 +0800 Delete EventBridge自研Runtime架构设计及实现.docx --- ...\256\241\345\217\212\345\256\236\347\216\260.docx" | Bin 1347865 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git "a/docs/cn/EventBridge\350\207\252\347\240\224Runtime\346\236\266\346\236\204\350\256\276\350\256\241\345\217\212\345\256\236\347\216\260.docx" "b/docs/cn/EventBridge\350\207\252\347\240\224Runtime\346\236\266\346\236\204\350\256\276\350\256\241\345\217\212\345\256\236\347\216\260.docx" deleted file mode 100644 index 5d62afe..000 Binary files "a/docs/cn/EventBridge\350\207\252\347\240\224Runtime\346\236\266\346\236\204\350\256\276\350\256\241\345\217\212\345\256\236\347\216\260.docx" and /dev/null differ
(rocketmq-eventbridge) 03/05: Create RocketMQEventBridgeRuntimeArchitectDesign
This is an automated email from the ASF dual-hosted git repository. shenlin pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/rocketmq-eventbridge.git commit e6967f7d0640e23fd1b6b6a604493a241cde036e Author: Artisan AuthorDate: Sun Aug 6 17:27:11 2023 +0800 Create RocketMQEventBridgeRuntimeArchitectDesign --- docs/cn/RocketMQEventBridgeRuntimeArchitectDesign | 88 +++ 1 file changed, 88 insertions(+) diff --git a/docs/cn/RocketMQEventBridgeRuntimeArchitectDesign b/docs/cn/RocketMQEventBridgeRuntimeArchitectDesign new file mode 100644 index 000..b4337e1 --- /dev/null +++ b/docs/cn/RocketMQEventBridgeRuntimeArchitectDesign @@ -0,0 +1,88 @@ + 背景 +EventBridge做为完整的实现EDA领域的基础服务,其开源第一个版本所依赖的核心运行引擎,为数据流链接工具RocketMQ Connect项目的Runtime运行时。RocketMQ Connect的Runtime虽然具备数据流转的能力,但针对事件的消费吞吐能力、事件目标的触达实时性、运行器的可观测能力等方面,对于开源EventBridge的使用者来说,无疑是存在不足的。针对上述问题,设计一款满足EDA场景下运行引擎Runtime是十分必要的。 +架构设计 +目前开源版本Runtime,核心模块分为: + - EventBusListerner,事件总线监听器(以下简称Listener),批量拉取事件并作本地缓存,供Transfer消费解析。 + - EventRuleTransfer,事件规则转换器(以下简称Transfer), 解析并流转批量事件至指定的事件记录(包含目标信息),供Trigger拉取并推送。 + - EventTargetTrigger,事件目标触发器(以下简称Trigger),将批量事件记录推送至目标端。 +架构运行图如下: +[图片] +围绕Listerner、Transfer、Trigger,有如下关键组件: + 1. Subscriber,订阅不同消息存储介质的抽象简称,用于拉取事件消息并作本地缓存,供Listener消费。 + 2. Observer,为动态监听目标配置(RunnerConfig)的观察者,具体有DbObserver, FileObserver, ControllerObserver。订阅者为,EventSubscriber和CirculatorContext。 + 3. OffsetManager,为位移管理器,用于提交事件在Transfer和Trigger完成其生命周期,所对应的消息存储介质的位移。 + 4. CirculatorContext,循环器上下文,用来维护Listener、Transfer、Trigger的所依赖的上下文元数据。 + 5. ErrorHandler,异常处理器,用于处理事件在不同阶段的消息流转,支持重试推送事件。 +设计原理 +在上面架构设计模块中,我们梳理了下Runtime的核心模块及关键组件。有些同学可能会发问,为什么要这样设计?下面我们从领域建模和技术指标两个维度,浅谈核心模块和关键组件的设计原理。 +领域建模 +在EventBridge中,我们定义了事件流转生命周期的若干个核心概念,有事件源、事件总线、事件规则、事件目标等。除了事件源,仅仅用来标识的是事件发送者的信息,而其他的事件总线、事件规则、事件目标则更多的是和事件消费者深度绑定的。 +从一个事件消费者的角度来说,我们需要知道这个事件存储在什么地方、这个事件是基于什么样的转换规则投递出去、以及最后如何让运行引擎和事件的消费者完成链接投递? +基于以上三个问题,我们抽象出来以事件总线、事件规则、事件目标为核心领域的Listener、Transfer、Trigger三个核心模块,三个模块构成一条核心链路完成一个事件在EventBridge服务端的运行流转,而这个核心链路就是Runtime的中枢调度器。 +技术指标 +事件消费吞吐量 +Subscriber模块实现了不同存储介质对事件的长链接拉去消费,缓存在本地队列中,并以RunnerName做为消费者分组批量拉取事件消息以及批量提交位点。该模块能够确保不同事件消费者的消费隔离,进而保证事件消费的高并发。 +在循环器上下文CirculatorListener中,有Listener、Transfer、Trigger所需的元数据,同时也有各模块所消费的事件记录本地缓存,从本地存储角度来说,直接提升了事件流转投递的吞吐性能。 +此外,在Transfer和Trigger模块,针对CPU密集型和IO密集型分配不同参数的线程池,可进一步保证事件消费的高性能。 +事件投递实时性 +Listener、Transfer、Trigger为独自运行线程,相互之间的数据绑定依赖于本地的事件记录缓存,而这些缓存数据都存储在统一的循环器上下文CirculatorContext中,可以保证事件记录的实时监听于投递。 +其次,循环器上下文CirculatorContext和Subscriber同时是事件目标RunnerConfig的配置内容修改的订阅者,可以实时感知事件目标的配置项修改,从而实时的完成各自元数据的更新。进一步保证事件投递的实效性。 +而后,位移管理器OffsetManager,可实时协调Transfer和Trigger的事件记录流转状态,确保事件投递的完整生命周期。 +运行器的可观测 +ErrorHander异常处理器,会处理每个异常投递的事件消息,并做好埋点记录。与此同时,社区方面正在建设Metric基础模块,以此完善EventBridge模块的可观测能力。 +核心模块 +存储介质 +在adapter包下新建storage模块,用来实现消息存储介质的多种策略实现。其中以抽象类EventSubscriber做为基类,可供不同的消息存储介质扩展实现。目前默认实现的是RocketMQEventSubscriber,后续将支持更多的存储介质实现。下图为EventSubscriber抽象类的核心接口, +[图片] +包含核心四个抽象方法, + - refresh,监听Runner运行器的配置信息,从而动态更新事件Consumer的关键字段。 + - pull,拉取事件消息 + - commit,事件消息位移提交 + - close,关闭指定事件消费者 +以RoekctMQSubscriber为例,做为Listener的上游入口,提供消息的消费入口并转换为事件记录在本地存储,供下游Runtime模块流转。同时,内置类ConsumeWorker以runnerName做分组,实现不同的目标事件消费者隔离。而做为RunnerConfigObserver的订阅者,方便ConsumeWokrder属性的动态更新。下图是内置类ConsumeWorker的定义及核心实现: +[图片] +每个ConsumeWorker做为单独线程运行,会接受RocketMQEventSubscriber对其生命周期的管理,对应的入口便是refresh, pull, commit, close四个核心抽象接口,RokectMQEventSubscriber会结合RokectMQ的特性(topic管理、消息分组、位移提交)实现四个接口的特定逻辑。 +监听器 +监听器的实现较为简单,主要用来向Subscriber批量拉取本地队列中的事件记录,然后交给循环器上下文暂存,后续由转换器拉取转换。具体实现逻辑如下: +[图片] +转换器 +Transfer同样是个独立线程,启动后批量向CirculatorContext拉取事件记录,而后使用TransformEngine对事件进行规则过滤,而后将合法的事件转换为可投递目标的事件记录。这里TransformEngine做为关键组件,用于将关键的Transform插件加载进内存,而后组装不同投递目标的转换列表,供Transfer调用转换事件记录。 +接下来,我们来看下在TransformEngine中是如何完成事件规则解析的。首先,一个标准的RunnerConfig配置信息,可以抽象定义为一个组件的三块内容,分别是:事件总线信息、事件规则转换器信息、以及事件目标触发器。以DingTalk的RunnerConfig为例,其标准JSON格式如下: +[图片] +而每个RunnerName在分配唯一的TransformEngine初始化时,会将RunnerConfig中组件components信息和EB所需要的插件在构造方法中加载初始化,并构建可用于转换事件记录的转换列表transformList。由DingTalk配置JSON可知,components中间部分是EB目前提供的通用transform插件,分别为EventBridgeFilterTransform和EventBridgeTransform,后续依赖业务场景将适当提供新的transform插件。下图为具体的初始化构建逻辑: +[图片] +这里需要关注的一点是,TransformEngine在执行doTransform时,则会循环遍历内存中的transform列表,调用实例化的两个transform对象(EventBridgeFilterTransform和EventBridgeTransform)执行解析转换,此类转换过程是个CPU密集型任务,需要关注线程池资源的合理调配。下图为具体转换入口: +[图片] +触发器 +Trigger也是个独立线程,用来指定事件匹配到的SinkTask,然后调用通用接口批量推送至目标端。当然,此处执行推送目标,比如HTTP接口、RPC接口、DingTalk等,都存在网络开销。因此,在多线程资源调配上面,需要针对IO密集型任务,做相应的动态资源调整。 +不同的推送目标对应不同的SinkTask,而这些SinkTask则依赖于管控侧创建事件目标时指定的SinkTask实现类。这些SinkTask实现类所在的链接器Connector则以插件的形式在项目启动时被预加载至内存中。不同的事件目标,其配置信息(参考DingTalk的JSON配置文件)会关联唯一的SinkTask。下图为初始化事件目标所关联唯一SinkTask的实现: +[图片] +这里要介绍下,SinkTask为分布式消息领域的开发标准OpenMessaging所提供的抽象类,不同的连接器继承该抽象类并实现抽象方法。EB所需要的这些SinkTask所对应的具体连接器Connector,后续会和其目前所在的项目为RocketMQ Connect共建。下图为抽象类SinkTask的数据结构定义: +[图片] +观察者 +事件目标的配置项,存在修改的场景,需实时同步至Runtime。对于配置项更新所产生的事件动作,这里面有两个入口,一个是事件的发布者,另一个是事件的订阅者。 +发布者,目前提供三种模式,一是DbOberserver,实时监听数据库中表event_ta
[GH] (rocketmq): Workflow run "Snapshot Daily Release Automation" is working again!
The GitHub Actions job "Snapshot Daily Release Automation" on rocketmq.git has succeeded. Run started by GitHub user lizhanhui (triggered by lizhanhui). Head commit for run: 46962c262c37554ff09afe9e02c7baf66a5ecc73 / fujian-zfj <2573259...@qq.com> [ISSUE #7523] Message will flush timeout when transientStorePoolEnable=true and flushDiskType=SYNC_FLUSH (#7524) * typo int readme[ecosystem] * enableTransientPool and sync_flush will cause flush_time_out * polish * add log Report URL: https://github.com/apache/rocketmq/actions/runs/6764695208 With regards, GitHub Actions via GitBox
Re: [I] error Caused by: java.util.concurrent.CancellationException: Task was cancelled. [rocketmq]
HappyAxin commented on issue #7239: URL: https://github.com/apache/rocketmq/issues/7239#issuecomment-1793937395 I'm having the same problem, has it been solved please? -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@rocketmq.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org
Re: [PR] [ISSUE #7491] metricsExporterType enum config support [rocketmq]
iamgd67 commented on PR #7492: URL: https://github.com/apache/rocketmq/pull/7492#issuecomment-1793942523 ping @xdkxlk for review -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@rocketmq.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org
Re: [PR] [ISSUE #7531] Clear POP_CK when sending messages [rocketmq]
RongtongJin merged PR #7532: URL: https://github.com/apache/rocketmq/pull/7532 -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@rocketmq.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org
Re: [I] [Bug] The PopCk is incorrect after forwarding messages to another broker [rocketmq]
RongtongJin closed issue #7531: [Bug] The PopCk is incorrect after forwarding messages to another broker URL: https://github.com/apache/rocketmq/issues/7531 -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@rocketmq.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org
(rocketmq) branch develop updated: [ISSUE #7531] Clear POP_CK when sending messages (#7532)
This is an automated email from the ASF dual-hosted git repository. jinrongtong pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/rocketmq.git The following commit(s) were added to refs/heads/develop by this push: new 00965d8c11 [ISSUE #7531] Clear POP_CK when sending messages (#7532) 00965d8c11 is described below commit 00965d8c11833237d5c9cd925664a1c456493cee Author: lk AuthorDate: Mon Nov 6 09:46:39 2023 +0800 [ISSUE #7531] Clear POP_CK when sending messages (#7532) --- .../broker/processor/SendMessageProcessor.java | 9 ++ .../common/message/MessageExtBrokerInner.java | 44 + .../apache/rocketmq/common/utils/MessageUtils.java | 48 ++ .../consumer/pop/PopMessageAndForwardingIT.java| 102 + 4 files changed, 161 insertions(+), 42 deletions(-) diff --git a/broker/src/main/java/org/apache/rocketmq/broker/processor/SendMessageProcessor.java b/broker/src/main/java/org/apache/rocketmq/broker/processor/SendMessageProcessor.java index 9625689a8e..956ef43fb2 100644 --- a/broker/src/main/java/org/apache/rocketmq/broker/processor/SendMessageProcessor.java +++ b/broker/src/main/java/org/apache/rocketmq/broker/processor/SendMessageProcessor.java @@ -47,6 +47,7 @@ import org.apache.rocketmq.common.message.MessageExtBrokerInner; import org.apache.rocketmq.common.sysflag.MessageSysFlag; import org.apache.rocketmq.common.topic.TopicValidator; import org.apache.rocketmq.common.utils.CleanupPolicyUtils; +import org.apache.rocketmq.common.utils.MessageUtils; import org.apache.rocketmq.common.utils.QueueTypeUtils; import org.apache.rocketmq.remoting.exception.RemotingCommandException; import org.apache.rocketmq.remoting.netty.NettyRequestProcessor; @@ -106,6 +107,8 @@ public class SendMessageProcessor extends AbstractSendMessageProcessor implement } RemotingCommand response; +clearReservedProperties(requestHeader); + if (requestHeader.isBatch()) { response = this.sendBatchMessage(ctx, request, sendMessageContext, requestHeader, mappingContext, (ctx1, response1) -> executeSendMessageHookAfter(response1, ctx1)); @@ -131,6 +134,12 @@ public class SendMessageProcessor extends AbstractSendMessageProcessor implement return false; } +private void clearReservedProperties(SendMessageRequestHeader requestHeader) { +String properties = requestHeader.getProperties(); +properties = MessageUtils.deleteProperty(properties, MessageConst.PROPERTY_POP_CK); +requestHeader.setProperties(properties); +} + /** * If the response is not null, it meets some errors * diff --git a/common/src/main/java/org/apache/rocketmq/common/message/MessageExtBrokerInner.java b/common/src/main/java/org/apache/rocketmq/common/message/MessageExtBrokerInner.java index 4e5d3419a3..52501dbca0 100644 --- a/common/src/main/java/org/apache/rocketmq/common/message/MessageExtBrokerInner.java +++ b/common/src/main/java/org/apache/rocketmq/common/message/MessageExtBrokerInner.java @@ -19,9 +19,7 @@ package org.apache.rocketmq.common.message; import java.nio.ByteBuffer; import org.apache.rocketmq.common.TopicFilterType; - -import static org.apache.rocketmq.common.message.MessageDecoder.NAME_VALUE_SEPARATOR; -import static org.apache.rocketmq.common.message.MessageDecoder.PROPERTY_SEPARATOR; +import org.apache.rocketmq.common.utils.MessageUtils; public class MessageExtBrokerInner extends MessageExt { private static final long serialVersionUID = 7256001576878700634L; @@ -62,45 +60,7 @@ public class MessageExtBrokerInner extends MessageExt { public void deleteProperty(String name) { super.clearProperty(name); if (propertiesString != null) { -int idx0 = 0; -int idx1; -int idx2; -idx1 = propertiesString.indexOf(name, idx0); -if (idx1 != -1) { -// cropping may be required -StringBuilder stringBuilder = new StringBuilder(propertiesString.length()); -while (true) { -int startIdx = idx0; -while (true) { -idx1 = propertiesString.indexOf(name, startIdx); -if (idx1 == -1) { -break; -} -startIdx = idx1 + name.length(); -if (idx1 == 0 || propertiesString.charAt(idx1 - 1) == PROPERTY_SEPARATOR) { -if (propertiesString.length() > idx1 + name.length() -&& propertiesString.charAt(idx1 + name.length()) == NAME_VALUE_SEPARATOR) { -break; -} -} -} -if (idx1 == -1) { -
[GH] (rocketmq): Workflow run "Build and Run Tests by Bazel" failed!
The GitHub Actions job "Build and Run Tests by Bazel" on rocketmq.git has failed. Run started by GitHub user RongtongJin (triggered by RongtongJin). Head commit for run: 00965d8c11833237d5c9cd925664a1c456493cee / lk [ISSUE #7531] Clear POP_CK when sending messages (#7532) Report URL: https://github.com/apache/rocketmq/actions/runs/6765275849 With regards, GitHub Actions via GitBox
[GH] (rocketmq-clients): Workflow run "CodeSpell Check" is working again!
The GitHub Actions job "CodeSpell Check" on rocketmq-clients.git has succeeded. Run started by GitHub user aaron-ai (triggered by aaron-ai). Head commit for run: 8769f0aa871f6324567be2f1dff0453e78c24b31 / Aaron Ai Remove semaphore from AsyncSimpleConsumerExample Signed-off-by: Aaron Ai Report URL: https://github.com/apache/rocketmq-clients/actions/runs/6765339540 With regards, GitHub Actions via GitBox
[GH] (rocketmq): Workflow run "Coverage" failed!
The GitHub Actions job "Coverage" on rocketmq.git has failed. Run started by GitHub user RongtongJin (triggered by RongtongJin). Head commit for run: 00965d8c11833237d5c9cd925664a1c456493cee / lk [ISSUE #7531] Clear POP_CK when sending messages (#7532) Report URL: https://github.com/apache/rocketmq/actions/runs/6765275846 With regards, GitHub Actions via GitBox
Re: [PR] update out-of-date java client examples [rocketmq-clients]
codecov-commenter commented on PR #627: URL: https://github.com/apache/rocketmq-clients/pull/627#issuecomment-1793962623 ## [Codecov](https://app.codecov.io/gh/apache/rocketmq-clients/pull/627?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) Report > Merging [#627](https://app.codecov.io/gh/apache/rocketmq-clients/pull/627?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) (8769f0a) into [master](https://app.codecov.io/gh/apache/rocketmq-clients/commit/19a4afc268d8f71b9289f9340a7df7a54b0cff22?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) (19a4afc) will **decrease** coverage by `8.72%`. > The diff coverage is `n/a`. ```diff @@ Coverage Diff @@ ## master #627 +/- ## - Coverage 55.84% 47.12% -8.72% - Complexity 664 668 +4 Files 259 207 -52 Lines 1558012109-3471 Branches 3859 3507 -352 - Hits 8700 5706-2994 + Misses 6633 6155 -478 - Partials247 248 +1 ``` | [Flag](https://app.codecov.io/gh/apache/rocketmq-clients/pull/627/flags?src=pr&el=flags&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | Coverage Δ | | |---|---|---| | [java](https://app.codecov.io/gh/apache/rocketmq-clients/pull/627/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `62.97% <ø> (+0.34%)` | :arrow_up: | | [nodejs](https://app.codecov.io/gh/apache/rocketmq-clients/pull/627/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `?` | | Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache#carryforward-flags-in-the-pull-request-comment) to find out more. [see 54 files with indirect coverage changes](https://app.codecov.io/gh/apache/rocketmq-clients/pull/627/indirect-changes?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) :mega: Codecov offers a browser extension for seamless coverage viewing on GitHub. Try it in [Chrome](https://chrome.google.com/webstore/detail/codecov/gedikamndpbemklijjkncpnolildpbgo) or [Firefox](https://addons.mozilla.org/en-US/firefox/addon/codecov/) today! -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@rocketmq.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org
Re: [PR] update out-of-date java client examples [rocketmq-clients]
aaron-ai commented on PR #627: URL: https://github.com/apache/rocketmq-clients/pull/627#issuecomment-1793964063 Thanks for you contribution @kingkh1995 . As for the `maxPollingSize`, it introduces more complexity to our example. Overall, it looks good. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@rocketmq.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org
[GH] (rocketmq): Workflow run "PUSH-CI" failed!
The GitHub Actions job "PUSH-CI" on rocketmq.git has failed. Run started by GitHub user RongtongJin (triggered by RongtongJin). Head commit for run: 00965d8c11833237d5c9cd925664a1c456493cee / lk [ISSUE #7531] Clear POP_CK when sending messages (#7532) Report URL: https://github.com/apache/rocketmq/actions/runs/6765275847 With regards, GitHub Actions via GitBox
Re: [PR] update out-of-date java client examples [rocketmq-clients]
aaron-ai merged PR #627: URL: https://github.com/apache/rocketmq-clients/pull/627 -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@rocketmq.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org
(rocketmq-clients) branch master updated: Update out-of-date java client examples (#627)
This is an automated email from the ASF dual-hosted git repository. aaronai pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/rocketmq-clients.git The following commit(s) were added to refs/heads/master by this push: new 4b7c4115 Update out-of-date java client examples (#627) 4b7c4115 is described below commit 4b7c41159548937efc89a3c3daa0bd786ff1ff4b Author: kaikoo <42601684+kingkh1...@users.noreply.github.com> AuthorDate: Mon Nov 6 10:08:46 2023 +0800 Update out-of-date java client examples (#627) * update out-of-date java client examples * Remove semaphore from AsyncSimpleConsumerExample Signed-off-by: Aaron Ai - Signed-off-by: Aaron Ai Co-authored-by: Aaron Ai --- .../org/apache/rocketmq/client/java/example/AsyncProducerExample.java | 2 +- .../rocketmq/client/java/example/ProducerDelayMessageExample.java | 2 +- .../apache/rocketmq/client/java/example/ProducerFifoMessageExample.java | 2 +- .../rocketmq/client/java/example/ProducerNormalMessageExample.java | 2 +- .../rocketmq/client/java/example/ProducerTransactionMessageExample.java | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/java/client/src/main/java/org/apache/rocketmq/client/java/example/AsyncProducerExample.java b/java/client/src/main/java/org/apache/rocketmq/client/java/example/AsyncProducerExample.java index 0a52c825..fe6ba179 100644 --- a/java/client/src/main/java/org/apache/rocketmq/client/java/example/AsyncProducerExample.java +++ b/java/client/src/main/java/org/apache/rocketmq/client/java/example/AsyncProducerExample.java @@ -67,6 +67,6 @@ public class AsyncProducerExample { Thread.sleep(Long.MAX_VALUE); // Close the producer when you don't need it anymore. // You could close it manually or add this into the JVM shutdown hook. -// producer.shutdown(); +// producer.close(); } } diff --git a/java/client/src/main/java/org/apache/rocketmq/client/java/example/ProducerDelayMessageExample.java b/java/client/src/main/java/org/apache/rocketmq/client/java/example/ProducerDelayMessageExample.java index a4dcf961..7c843883 100644 --- a/java/client/src/main/java/org/apache/rocketmq/client/java/example/ProducerDelayMessageExample.java +++ b/java/client/src/main/java/org/apache/rocketmq/client/java/example/ProducerDelayMessageExample.java @@ -61,6 +61,6 @@ public class ProducerDelayMessageExample { } // Close the producer when you don't need it anymore. // You could close it manually or add this into the JVM shutdown hook. -// producer.shutdown(); +// producer.close(); } } \ No newline at end of file diff --git a/java/client/src/main/java/org/apache/rocketmq/client/java/example/ProducerFifoMessageExample.java b/java/client/src/main/java/org/apache/rocketmq/client/java/example/ProducerFifoMessageExample.java index a39a980c..9b310a80 100644 --- a/java/client/src/main/java/org/apache/rocketmq/client/java/example/ProducerFifoMessageExample.java +++ b/java/client/src/main/java/org/apache/rocketmq/client/java/example/ProducerFifoMessageExample.java @@ -59,6 +59,6 @@ public class ProducerFifoMessageExample { } // Close the producer when you don't need it anymore. // You could close it manually or add this into the JVM shutdown hook. -// producer.shutdown(); +// producer.close(); } } diff --git a/java/client/src/main/java/org/apache/rocketmq/client/java/example/ProducerNormalMessageExample.java b/java/client/src/main/java/org/apache/rocketmq/client/java/example/ProducerNormalMessageExample.java index b8e510ce..c8650b80 100644 --- a/java/client/src/main/java/org/apache/rocketmq/client/java/example/ProducerNormalMessageExample.java +++ b/java/client/src/main/java/org/apache/rocketmq/client/java/example/ProducerNormalMessageExample.java @@ -57,6 +57,6 @@ public class ProducerNormalMessageExample { } // Close the producer when you don't need it anymore. // You could close it manually or add this into the JVM shutdown hook. -// producer.shutdown(); +// producer.close(); } } diff --git a/java/client/src/main/java/org/apache/rocketmq/client/java/example/ProducerTransactionMessageExample.java b/java/client/src/main/java/org/apache/rocketmq/client/java/example/ProducerTransactionMessageExample.java index d05f2a99..8eec6091 100644 --- a/java/client/src/main/java/org/apache/rocketmq/client/java/example/ProducerTransactionMessageExample.java +++ b/java/client/src/main/java/org/apache/rocketmq/client/java/example/ProducerTransactionMessageExample.java @@ -73,6 +73,6 @@ public class ProducerTransactionMessageExample { // Close the producer when you don't need it anymore. // You could close it manually or add this into the JVM shutdown hook. -// producer.shutdown(); +// producer.cl
Re: [PR] [ISSUE #950] support tls connection [rocketmq-client-go]
yuz10 merged PR #951: URL: https://github.com/apache/rocketmq-client-go/pull/951 -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@rocketmq.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org
Re: [I] support tls connection [rocketmq-client-go]
yuz10 closed issue #950: support tls connection URL: https://github.com/apache/rocketmq-client-go/issues/950 -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@rocketmq.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org
(rocketmq-client-go) branch master updated: [ISSUE #950] support tls connection (#951)
This is an automated email from the ASF dual-hosted git repository. yuzhou pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/rocketmq-client-go.git The following commit(s) were added to refs/heads/master by this push: new c9e197c [ISSUE #950] support tls connection (#951) c9e197c is described below commit c9e197c3af45f846ba528cbc05f2228039be5f3e Author: yuz10 <845238...@qq.com> AuthorDate: Mon Nov 6 10:19:16 2023 +0800 [ISSUE #950] support tls connection (#951) * [ISSUE #950] support tls connection * add tls to admin options * support go 1.13 --- admin/admin.go | 6 consumer/option.go | 6 examples/consumer/tls/main.go| 59 ++ examples/producer/tls/main.go| 62 internal/remote/remote_client.go | 1 + internal/remote/tcp_conn.go | 13 +++-- producer/option.go | 6 7 files changed, 151 insertions(+), 2 deletions(-) diff --git a/admin/admin.go b/admin/admin.go index 487c8b4..62175af 100644 --- a/admin/admin.go +++ b/admin/admin.go @@ -77,6 +77,12 @@ func WithNamespace(namespace string) AdminOption { } } +func WithTls(useTls bool) AdminOption { + return func(options *adminOptions) { + options.ClientOptions.RemotingClientConfig.UseTls = useTls + } +} + type admin struct { cli internal.RMQClient diff --git a/consumer/option.go b/consumer/option.go index ac7dd93..24acf7c 100644 --- a/consumer/option.go +++ b/consumer/option.go @@ -381,3 +381,9 @@ func WithLimiter(limiter Limiter) Option { opts.Limiter = limiter } } + +func WithTls(useTls bool) Option { + return func(opts *consumerOptions) { + opts.ClientOptions.RemotingClientConfig.UseTls = useTls + } +} diff --git a/examples/consumer/tls/main.go b/examples/consumer/tls/main.go new file mode 100644 index 000..248c837 --- /dev/null +++ b/examples/consumer/tls/main.go @@ -0,0 +1,59 @@ +/* +Licensed to the Apache Software Foundation (ASF) under one or more +contributor license agreements. See the NOTICE file distributed with +this work for additional information regarding copyright ownership. +The ASF licenses this file to You under the Apache License, Version 2.0 +(the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package main + +import ( + "context" + "fmt" + "os" + "time" + + "github.com/apache/rocketmq-client-go/v2" + "github.com/apache/rocketmq-client-go/v2/consumer" + "github.com/apache/rocketmq-client-go/v2/primitive" +) + +func main() { + c, _ := rocketmq.NewPushConsumer( + consumer.WithGroupName("testGroup"), + consumer.WithNsResolver(primitive.NewPassthroughResolver([]string{"127.0.0.1:9876"})), + consumer.WithTls(true), + ) + err := c.Subscribe("test", consumer.MessageSelector{}, func(ctx context.Context, + msgs ...*primitive.MessageExt) (consumer.ConsumeResult, error) { + for i := range msgs { + fmt.Printf("subscribe callback: %v \n", msgs[i]) + } + + return consumer.ConsumeSuccess, nil + }) + if err != nil { + fmt.Println(err.Error()) + } + // Note: start after subscribe + err = c.Start() + if err != nil { + fmt.Println(err.Error()) + os.Exit(-1) + } + time.Sleep(time.Hour) + err = c.Shutdown() + if err != nil { + fmt.Printf("shutdown Consumer error: %s", err.Error()) + } +} diff --git a/examples/producer/tls/main.go b/examples/producer/tls/main.go new file mode 100644 index 000..c926c05 --- /dev/null +++ b/examples/producer/tls/main.go @@ -0,0 +1,62 @@ +/* +Licensed to the Apache Software Foundation (ASF) under one or more +contributor license agreements. See the NOTICE file distributed with +this work for additional information regarding copyright ownership. +The ASF licenses this file to You under the Apache License, Version 2.0 +(the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIN
Re: [I] org.apache.rocketmq.client.impl.MQClientAPIImpl#getBrokerClusterAclInfo 获取版本空指针 [rocketmq]
drpmma commented on issue #7533: URL: https://github.com/apache/rocketmq/issues/7533#issuecomment-1793984712 https://github.com/apache/rocketmq/blob/00965d8c11833237d5c9cd925664a1c456493cee/acl/src/main/java/org/apache/rocketmq/acl/AccessValidator.java#L70-L76 -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@rocketmq.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org
[GH] (rocketmq): Workflow run "Build and Run Tests by Maven" failed!
The GitHub Actions job "Build and Run Tests by Maven" on rocketmq.git has failed. Run started by GitHub user RongtongJin (triggered by RongtongJin). Head commit for run: 00965d8c11833237d5c9cd925664a1c456493cee / lk [ISSUE #7531] Clear POP_CK when sending messages (#7532) Report URL: https://github.com/apache/rocketmq/actions/runs/6765275845 With regards, GitHub Actions via GitBox
Re: [I] [BUG] 当使用 producer message.getUserProperty 存时,consumer 取出来值后面拼了一段字符串 [rocketmq]
drpmma commented on issue #7530: URL: https://github.com/apache/rocketmq/issues/7530#issuecomment-1793990910 It seems that rocketmq does not append extra information from the code. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@rocketmq.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org
Re: [I] [BUG] 当使用 producer message.getUserProperty 存时,consumer 取出来值后面拼了一段字符串 [rocketmq]
drpmma commented on issue #7530: URL: https://github.com/apache/rocketmq/issues/7530#issuecomment-1793994887 Do you use rocketmq-spring or Skywalking? There are some issues related to your problem that you could reference. https://github.com/apache/rocketmq/issues/3331 https://github.com/apache/skywalking-java/pull/54 -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@rocketmq.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org
[I] 安装配置好之后使用mqttx测试连接不上 [rocketmq-mqtt]
EssinZhang opened a new issue, #216: URL: https://github.com/apache/rocketmq-mqtt/issues/216 RocketMQ 版本5.1.4 RocketMQ-mqtt 版本 1.0.2  这是日志  这是mqtt的配置文件  我对了好多遍用户名和密码是对的没错 -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@rocketmq.apache.org.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org