消费端配置
如下所示:是消费者的配置类,有以下几点需要注意的地方
1、是TargetMessageListener这个监听类(下文会把这个监听类的具体代码贴出来),需要把这个监听类订阅。
2、rocketMqDcProperties.getTargetProperties()这个方法里面有相关的配置信息(这里面有绑定消费者是那个组,因为一类Producer或Consumer,这类Producer或Consumer通常生产或消费同一类消息,且消息发布或订阅的逻辑一致),具体代码见下文
3、subscription.setTopic(rocketMqDcProperties.getOrderTopic()) 是绑定Topic,这个Topic跟上篇文章生产者的Topic是一致的,这样就能保证消费者能准确消费到生产者发送的消息
4、subscription.setExpression(MqTagEnum.target.name()); 这个是一个消息的过滤,也是一个对消息的具体分类。详细用法请参考链接:
https://help.aliyun.com/zh/apsaramq-for-rocketmq/cloud-message-queue-rocketmq-4-x-series/developer-reference/message-filtering?spm=a2c4g.11186623.0.i38#concept-2047069
综上所述:
这段代码主要是用于配置一个 OrderConsumerBean 对象,设置其属性和订阅关系
@Configuration
public class TargetConsumerClient {
@Autowired
private RocketMqDcProperties rocketMqDcProperties;
@Autowired
private TargetMessageListener messageListener;
@ConditionalOnProperty(name = "rocket.mq.dc.enabled", havingValue = "true", matchIfMissing = true)
@Bean(initMethod = "start", destroyMethod = "shutdown",name = {
"buildTargetConsumer"})
public OrderConsumerBean buildTargetConsumer() {
OrderConsumerBean orderConsumerBean = new OrderConsumerBean();
//配置文件
orderConsumerBean.setProperties(rocketMqDcProperties.getTargetProperties());
//订阅关系
Map<Subscription, MessageOrderListener> subscriptionTable = new HashMap<Subscription, MessageOrderListener>();
Subscription subscription = new Subscription();
subscription.setTopic(rocketMqDcProperties.getOrderTopic(