本文为您介绍Global Replicator的操作指导、页面相关属性介绍以及常见问题,以帮助您快速了解使用相关功能。
前提条件
已创建云消息队列 RocketMQ 版实例。版本要求:
云消息队列 RocketMQ 版4.0系列铂金版。
云消息队列 RocketMQ 版5.0系列专业版、铂金版。
本文以源集群和目标集群均为云消息队列 RocketMQ 版5.0系列实例为例进行说明。
计算规格选择建议
在使用Global Replicator时,配置完成Topic映射关系后,消息同步将对实例产生额外的TPS开销,因此需要考虑同步任务源及目标RocketMQ实例的收发TPS峰值上限。
建议规格说明:
例如,在未同步的情况下,云消息队列 RocketMQ 版实例的发送TPS峰值为10000(次/秒),接收TPS峰值为10000(次/秒)。
建议源实例和目标实例的TPS配置如下:
任务类型 | 源实例 | 目标实例 | ||||
收发TPS峰值上限(次/秒) | 发送TPS峰值(次/秒) | 接收TPS峰值(次/秒) | 收发TPS峰值上限(次/秒) | 发送TPS峰值(次/秒) | 接收TPS峰值(次/秒) | |
单向同步 | 30000 | 10000 | 20000 | 20000 | 10000 | 10000 |
双向同步 | 40000 | 20000 | 20000 | 40000 | 20000 | 20000 |
实例的收发TPS峰值上限可以在实例详情页面查看,不同规格实例的TPS峰值上限,请参见实例规格上限。
目标实例接收TPS峰值可根据业务需要的处理速度进行调整。
创建Global Replicator任务
首次使用Global Replicator时,会弹出阿里云服务授权 - RocketMQ Global Replicator的对话框,单击确认后将自动创建目标服务的关联角色AliyunServiceRoleForRMQDisasterRecovery
,以便在云消息队列 RocketMQ 版中实现Global Replicator功能。更多信息,请参见服务关联角色。
步骤一:创建任务
- 登录云消息队列 RocketMQ 版控制台。
在左侧导航栏,单击Global Replicator,然后单击创建任务。
在创建任务页面,填写以下信息,主要配置如下,其余可按需配置,然后单击创建。
源集群与目标集群的不同集群类型配置,请参见下表:
消息队列 RocketMQ 版
配置项
说明
配置示例
版本
选择云消息队列 RocketMQ 版实例版本。
4.0系列实例
5.0系列实例
5.0系列实例
地域
选择云消息队列 RocketMQ 版实例的地域。
华东1(杭州)
实例
选择云消息队列 RocketMQ 版实例。
rmq-cn-778***
认证模式
无需配置
ACL身份识别
ACL身份识别
用户名
选择用户名。
yS8x01****
安全组 ID
云消息队列 RocketMQ 版实例所在ECS服务中的安全组。版本为5.0系列实例时配置。
入方向:无要求
出方向:
授权策略:允许
协议:自定义TCP
访问目的:网段包含集群交换机的所有网段;端口包含8080和8081。
sg-2ze4jlbqy2s40pc4****
过滤条件系统配置
(可选)支持向消息中添加自定义属性(UserProperty),消费者可基于SQL92语法订阅策略实现消息过滤。
Key:UserProperty的Key名
源集群Value:来自源集群的消息添加的UserProperty的Value值
目标集群Value:来自目标集群的消息添加的UserProperty的Value值
SQL92订阅过滤示例如下:
String sqlStr = "{Key} IS NOT NULL AND {Key} = {源/目标集群Value}"; consumer.subscribe(MqConfig.TOPIC, MessageSelector.bySql(sqlStr));
无
Apache RocketMQ
配置项
说明
配置示例
接入点
接入点格式为
{域名/IP}:{端口号}
。XX.XX.XX.XX:8080
认证模式
无需配置
ACL身份识别
ACL身份识别
用户名
根据业务自行填写。
yS8x01****
密码
根据业务自行填写。
F17R4to****
网络配置
公网
VPC网络
公网
地域
网络配置为VPC网络时配置。选择Apache RocketMQ所在ECS服务中的地域。
华东1(杭州)
VPC 网络
网络配置为VPC网络时配置。Apache RocketMQ所在ECS服务中的实际VPC。
vpc-bp17fapfdj0dwzjkd****
交换机
网络配置为VPC网络时配置。Apache RocketMQ所在ECS服务中的实际交换机。
vsw-bp1gbjhj53hdjdkg****
安全组 ID
网络配置为VPC网络时配置。Apache RocketMQ所在ECS服务中的实际安全组。
入方向:无要求
出方向:
授权策略:允许
协议:自定义TCP
访问目的:网段包含所有Apache RocketMQ节点所在的网段;端口号包含所有Apache RocketMQ节点服务的端口号,默认端口号包含9876、10911和10909(如果修改了nameserver,broker的端口,需设置修改后的端口)。
sg-2ze4jlbqy2s40pc4****
过滤条件系统配置
(可选)支持向消息中添加自定义属性(UserProperty),消费者可基于SQL92语法订阅策略实现消息过滤。
Key:UserProperty的Key名
源集群Value:来自源集群的消息添加的UserProperty的Value值
目标集群Value:来自目标集群的消息添加的UserProperty的Value值
SQL92订阅过滤示例如下:
String sqlStr = "{Key} IS NOT NULL AND {Key} = {源/目标集群Value}"; consumer.subscribe(MqConfig.TOPIC, MessageSelector.bySql(sqlStr));
无
步骤二:配置Topic映射关系
在任务基本信息页面,单击左侧导航栏的消息同步任务。
单击批量映射或者添加映射,在弹出的对话框中配置需要同步的Topic映射关系。
批量映射:配置并勾选所需的Topic映射,然后单击确定。
添加映射:配置所需的Topic映射,然后单击确定。
说明若源集群类型为Apache RocketMQ,则需要填写一个用于同步消息的Group,避免使用正常业务的Group。
完成配置Topic映射关系后,消息才会开始同步。
步骤三:(可选)开启消费进度同步
开启消费进度同步后,可以将Group消费Topic的当前消费进度同步到目标集群。详情请参见消费进度同步。
消费端说明
例如,我们配置源集群为上海云消息队列 RocketMQ 版实例与目标集群杭州云消息队列 RocketMQ 版实例双向同步的任务。过滤条件的Key设置为Region,源集群Value设置为Shanghai,目标集群Value设置为Hangzhou。
上海消费端正常情况下仅消费上海地域的数据,不消费杭州数据,所以采用单个自定义属性匹配即可。具体请参见事件模式。
订阅消息,根据单个自定义属性匹配消息。
String topic = "topic";
//只订阅本地域的消息。
FilterExpression filterExpression = new FilterExpression("Region IS NOT NULL", FilterExpressionType.SQL92);
//因为本地生产应用在发送消息时并没有在消息中设置UserProperty的Key为Region的值,所以Key为Region的自定义属性为NULL
simpleConsumer.subscribe(topic, filterExpression);
订阅消息,匹配Topic中的所有消息,不进行过滤。
String topic = "topic";
//订阅所有消息。
FilterExpression filterExpression = new FilterExpression("True", FilterExpressionType.SQL92);
simpleConsumer.subscribe(topic, filterExpression);