事件流事件源的注意事项和使用限制

事件源

注意事项和使用限制

云消息队列 RocketMQ 版

  • 多订阅限制:一个Group只能被一个事件流独占,不同事件流使用不同的Group,也不允许在其他自定义程序中再使用该Group;

  • 并发数限制:并发数的上限为RocketMQ的队列数。

云消息队列 Kafka 版

  • 多订阅限制:一个Group只能被一个事件流独占,不同事件流使用不同的Group,也不允许在其他自定义程序中再使用该Group;

  • 并发数限制:并发数的上限为Kafka的分区数。

轻量消息队列(原 MNS)

  • 多订阅限制:MNSQueue不支持多订阅,所以配置任务的时候,一个Queue只能被EventBridge的一个任务绑定,不建议应用程序自己订阅Queue,也不建议EventBridge多个任务共享一个Queue;

  • 处理时长限制:MNS的消息有可见性时间限制,即指定时间内消息如果没有成功处理完毕,就会导致MNS的消息重新投递。因此,当下游RT响应时间较长时,需要修改延长MNSQueue的可见性时间,否则会导致消息重复投递。

云消息队列 RabbitMQ 版

  • 处理时长限制:RabbitMQ的消息有可见性时间限制,即指定时间内消息如果没有成功处理完毕,就会导致RabbitMQ的消息重新投递。RabbitMQ的默认可见性时间和 RabbitMQ 实例类型相关,具体可参考消费重试策略,不可修改。因此,当下游RT响应时间较长时,会导致消息重复投递;

  • 参数限制:自建RabbitMQ不支持多 IP 接入点。

云消息队列 MQTT 版

  • 处理时长限制:MQTT的消息有可见性时间限制,即指定时间内消息如果没有成功处理完毕,就会导致MQTT的消息重新投递。MQTT的默认可见性时间为:10s,不可修改。因此,当下游RT响应时间较长时,会导致消息重复投递;

  • Region 及 实例限制:仅支持国内Region 3.X 版本 MQTT 实例。

云数据库 RDS MySQL 版

  • 版本限制:支持MySQL 5.6,5.7,8.0;

  • MySQL参数限制:

    • BinLog日志需开启

    • BINLOG_FORMAT需设置为ROW

    • BINLOG_ROW_IMAGE需设置为FULL

    • 需开启GTID

    • 需开启enforce_gtid_consistency

  • 权限限制:配置的数据库账号必须要被授予相关权限:REPLICATION CLIENT、REPLICATION SLAVE、SELECT、RELOAD、SHOW DATABASES;

  • Table限制:不能是一个View,且必须设置主键;

  • At-least-once:保障数据至少投递一次,但不保证数据不重复;如果服务出现宕机会重启,数据可能会出现少量重复,需要下游做好幂等;

  • BinLog保存周期限制:BinLog保存周期至少大于快照同步的时长(一般建议大于3天)。如果历史快照数据过多,同步下游速度过慢,快照数据同步时长超过了BinLog的保存周期,会导致快照同步完毕时BinLog已经过期而同步失败,触发周期性重试。

日志服务SLS

  • 多订阅限制:EventBridge 会为消费 SLS 的任务创建消费组Group,不同事件流使用不同的Group,不允许在其他自定义程序中再使用该Group;

  • 并发数限制:并发数的上限为SLS LogStore可读的Shard数。

数据传输服务DTS

  • 多订阅限制:采用 SUBSCRIBE 模式消费,请勿使用同一消费组创建其他任务;

  • 地域限制:支持创建 DTS 任务的地域:华东1(杭州)、华东2(上海)、华北1(青岛)、华北2(北京)、华南1(深圳)、华南3(广州)、西南1(成都)、中国香港。

事件总线EventBus

  • 多订阅限制:通过事件流订阅EventBus事件时,一个Rule只能被一个事件流绑定,否则多个事件流会争抢这个EventBus的事件;

  • 处理时长限制:EventBus的消息有可见性时间限制,即指定时间内消息如果没有成功处理完毕,就会导致EventBus的消息重新投递。EventBus的默认可见性时间为:6min,不可修改。因此,当下游RT响应时间较长时,会导致消息重复投递。