Skip to content

最佳实践 Provider

Suclogger edited this page Jul 11, 2017 · 1 revision

通用准则

  • 同一个应用使用同一个pruducerGroup,放在spring配置文件中
  • 打印消息日志,务必要打印 sendresult:sync方式重写doAfterSynSend方法,async方法在callback中处理
  • 如果不关注消息是否成功发送到broker,使用sendOneWay方法发送消息
  • 一个应用尽可能用一个 Topic,消息子类型用 tags 来标识,因为Topic过多会影响Broker性能

全局单例的Producer

你可以全局只继承一次AbstractMQProducer,然后用这个producer发送不同topic和tag的消息:


@MQProducer
class DemoProducerWithTopicAndTag : AbstractMQProducer()

...

@Autowired
DemoProducerWithTopicAndTag yourProducer;

yourProducer.sendOneWay(String topic, String tag, Object msgObj)

携带Topic(和Tag)的Producer

因为通常topic是写在配置文件中的,如果维护全局单例的Producer就需要多个地方注入topic,如果你觉得这样比较麻烦,你可以创建多个producer,每个producer专用于发送同一个topic(和Tag)的消息,放心,底层的的producer依然是单例:


@MQProducer(topic = "mytopic", tag = "2")
class DemoProducerWithTopicAndTag : AbstractMQProducer()

...

@Autowired
DemoProducerWithTopicAndTag yourProducer;

yourProducer.sendOneWay(Object msgObj)


Clone this wiki locally