@Component @RocketMQMessageListener(topic = "my-topic",consumerGroup="demo-consumer-group") public class ConsumerSimple implements RocketMQListener<String> { @Override public void onMessage(String msg) { //此方法被调用表示接收到消息,msg形参就是消息内容 //处理消息... System.out.println(msg); } }如果是不同方法相同参数怎么判断,举个示例
时间: 2024-01-26 18:04:42 浏览: 72
如果你有多个方法都是接收相同的参数类型,那么可以通过 `@RocketMQMessageListener` 注解中的 `selectorExpression` 属性来区分不同的消息类型。例如:
```
@Component
@RocketMQMessageListener(topic = "my-topic", consumerGroup = "demo-consumer-group", selectorExpression = "msgTypeA")
public class ConsumerSimpleA implements RocketMQListener<String> {
@Override
public void onMessage(String msg) {
// 处理消息类型为 msgTypeA 的消息
System.out.println("Received message type A: " + msg);
}
}
@Component
@RocketMQMessageListener(topic = "my-topic", consumerGroup = "demo-consumer-group", selectorExpression = "msgTypeB")
public class ConsumerSimpleB implements RocketMQListener<String> {
@Override
public void onMessage(String msg) {
// 处理消息类型为 msgTypeB 的消息
System.out.println("Received message type B: " + msg);
}
}
```
在这个例子中,我们定义了两个消费者,它们都订阅同一个Topic,并且指定了 `selectorExpression` 属性。当生产者发送消息时,通过设置消息的 `tags` 或者 `keys` 来指定消息类型,例如:
```
// 发送消息类型为 msgTypeA 的消息
producer.send(new Message("my-topic", "msgTypeA", "Hello, World!"));
// 发送消息类型为 msgTypeB 的消息
producer.send(new Message("my-topic", "msgTypeB", "Hello, RocketMQ!"));
```
当消费者接收到消息时,会根据 `selectorExpression` 属性值来选择对应的消费者来处理该消息。因此,我们可以通过设置不同的 `selectorExpression` 来区分不同类型的消息,从而实现不同方法处理相同参数类型的需求。
阅读全文