首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以从registerMessageListener ( RocketMQ )中获取组名吗?

可以从registerMessageListener ( RocketMQ )中获取组名吗?
EN

Stack Overflow用户
提问于 2022-06-20 09:01:04
回答 1查看 44关注 0票数 0

我使用RocketMQ作为消息中心,这是使用者依赖关系jar:

代码语言:javascript
复制
<dependency>
            <groupId>org.apache.rocketmq</groupId>
            <artifactId>rocketmq-client</artifactId>
            <version>4.9.1</version>
        </dependency>

这是conumser代码的一部分:

代码语言:javascript
复制
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名称?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-27 12:21:37

因为您已经可以从使用者实例中获得回调方法中的使用者组名称。

代码语言:javascript
复制
consumer.getConsumerGroup().

也许您需要为侦听器定义一个非匿名实例。

你可以试试

代码语言:javascript
复制
public class MyMessageListenerConcurrently implements MessageListenerConcurrently{
    private String consumerGroupName;
    public MyMessageListenerConcurrently(String consumerGroupName) {
        this.consumerGroupName = consumerGroupName
    }
    ....
}

当你注册时:

代码语言:javascript
复制
    consumer.registerMessageListener(new MyMessageListenerConcurrently(consumer.getConsumerGroup()));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72684579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档