上云无忧 > 文档中心 > 天翼云分布式消息服务RocketMQ Java客户端Pull和Push的选择
分布式消息服务RocketMQ
天翼云分布式消息服务RocketMQ Java客户端Pull和Push的选择

文档简介:
Java客户端必须使用Push Consumer (1)使用Pull可以实现的所有场景,均可使用Push实现,并且更简单。 (2)Push其实是长轮询的Pull(依然是由客户端发起),在客户端通过配置参数是可以实现流控的,并不会出现服务端的流量压垮客户端的情况。
*产品来源:中国电信天翼云。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠
Java客户端必须使用Push Consumer
(1)使用Pull可以实现的所有场景,均可使用Push实现,并且更简单。
(2)Push其实是长轮询的Pull(依然是由客户端发起),在客户端通过配置参数是可以实现流控的,并不会出现服务端的流量压垮客户端的情况。
(3)Push封装了拉取消息,分发给消费线程的线程模型,非流控的情况下,由后台线程主动拉取消息,并缓存在本地,消费线程池有空闲线程时,分发给消费线程,在有堆积量的情况下,可以保证消费线程一直工作,性能更高(PS:Pull只提供了拉取消息的功能,并且何时去拉取,拉取时机,这些都需要应用去控制;分发给消费线程的逻辑需要应用封装,除了增加应用工作量外,还可能有不稳定、性能问题等)。
(4)Push经过多个大型项目的长时间的使用(比如物联网,使用能台,多个试点省份),更成熟稳定。
(5)Push会自动订阅重试队列,不需要再次调用拉取重试队列的API来取得重试队列的消息(PS:Pull需要另外调用API拉取重试队列的消息)。
Pull是一种遗留的消费模式(兼容早期的API),新开发的应用,或者未上线的应用,都要求使用Push消费模式。
相似文档
  • 有序消息。 在业务场景允许的情况下,优先选择无序消息,或者在业务能变通的情况下,将有序消息转化为无序消息。 无序消息的优点: 1)生产者可以使用多进程、多线程往同一个Topic发送消息,性能更好。
  • (1)RocketMQ无法避免消息重复,原因主要有以下几点: 1)签收的偏移量是定时(每5秒/次)同步到服务端的。 2)为保证消息不丢失,SDK每次提交的总是队列未签收的最小偏移量
  • Topic:消息主题,通过 Topic 对不同的业务消息进行分类。 Tag:消息标签,用来进一步区分某个 Topic 下的消息分类,消息队列 RocketMQ 允许消费者按照 Tag 对消息进行过滤,确保消费者最终只消费到他关注的消息类型。
  • RocketMQ 里的一个 Consumer Group 代表一个 Consumer 群组。对于大多数分布式应用来说,一个 Consumer Group 下通常会有多个 Consumer 实例。订阅关系一致指的是同一个 Consumer Group 下所有 Consumer 实例的处理逻辑必须完全一致,一旦订阅关系不一致,消息消费的逻辑就会混乱,甚至导致消息丢失。
  • 每个消息在业务层面的唯一标识码,要设置到 keys字段,方便将来定位消息丢失问题。服务器会为每个消息创建索引(哈希索引),应用可以通过 topic key来查询该消息内容。由于是哈希索引,请务必保证 key唯一,这样可以避免潜在的哈希冲突。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部