
消息中间件是我们工作中使用最频繁的一类中间件,它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。当今市面上有很多主流的消息中间件,如老牌的ActiveMQ、RabbitMQ,炙手可热的Kafka,阿里巴巴自主开发RocketMQ等。今天,指北君就来详细讲讲RocketMQ生产者和消费者在使用时的一些注意事项。
一. 生产者
1.1 发送消息注意事项
1)消息大小
建议消息大小不要超过512K。
2)异步发送
默认的发送为同步发送,send方法会一直阻塞,等待broker端的响应。如果你关注性能问题,可以通过send(msg, callback)来发起异步调用。
3)生产者组
正常情况下生产者组是没有作用的,但是在发送事务消息时,如果producer中途意外宕机,broker会主动回调producer group 内的任意一台机器来确认事务的状态。(目前开源版本还不支持事务消息)。
4)线程安全问题
生产者实例是线程安全的,在应用中只需要实例化一次即可。
5)性能问题
如果你希望在一个jvm进程内使用多个producer实例来提高发送能,我们建议:
使用异步发送,并且producer实例只需要3 ~ 5个即可 对每一个producer 调用 setInstanceName,区别不同的生产者。
6)发送超时时间
当客户端向broker发送请求超时时,客户端会抛出 RemotingTimeoutException,默认的超时时间是3秒。通过调用send(msg, timeout) 可以设置超时时间。超时时间建议不要设置过小,因为 broker 可能需要时间刷盘或向 slave 同步数据。
7)对于同一个应用最好只使用一个Topi

本文详细介绍了RocketMQ的使用,包括生产者的消息大小限制、异步发送、线程安全以及发送超时时间等注意事项,强调了消息发送的幂等性和重试策略。在消费者部分,讲解了消费者组订阅、MessageListener类型、线程数配置以及如何处理消费速度慢的问题。同时,文中提醒在业务层面处理消息重复,确保消息的幂等性。
最低0.47元/天 解锁文章
1645

被折叠的 条评论
为什么被折叠?



