我使用RocketMQ作为消息中心,这是使用者依赖关系jar:
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-client</artifactId>
<version>4.9.1</version>
</dependency>这是conumser代码的一部分:
consumer.registerMessageListener(new MessageListenerConcurrently() {
@Override
public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) {
for (MessageExt message : msgs) {
String params = new String(message.getBody(), StandardCharsets.UTF_8);
ObjectMapper mapper = new ObjectMapper();
try {
Map<String, Object> parameters = mapper.readValue(params, Map.class);
String messageTopic = context.getMessageQueue().getTopic();
// what should I do to get the group name ?
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
}
return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
}
});
consumer.start();在这个代码块中,我想获取consumerGroup名称,我跟踪到ConsumeConcurrentlyContext类,只找到了主题,没有找到consumerGroup名称。是否可以从consumerGroup块中获取registerMessageListener名称?
发布于 2022-06-27 12:21:37
因为您已经可以从使用者实例中获得回调方法中的使用者组名称。
consumer.getConsumerGroup().也许您需要为侦听器定义一个非匿名实例。
你可以试试
public class MyMessageListenerConcurrently implements MessageListenerConcurrently{
private String consumerGroupName;
public MyMessageListenerConcurrently(String consumerGroupName) {
this.consumerGroupName = consumerGroupName
}
....
}当你注册时:
consumer.registerMessageListener(new MyMessageListenerConcurrently(consumer.getConsumerGroup()));https://stackoverflow.com/questions/72684579
复制相似问题