activemq的topic队列,在消费者1宕机时,发送给消费者1的消息会被阻塞并持久化起来吗?

发布于 2022-09-07 12:30:12 字数 1035 浏览 22 评论 0

我设置的producer和consumer的应答模式是CLIENT_ACKNOWLEDGE,也设置了持久化消息和持久化topic,如果消费者端未消费该消息,则消费者端不会调用acknowledge()方法,经测试发现如果消费者宕机则消息会丢失,不会重新读取进来?这是什么情况?messageListener的onMessage方法如下:

  @Override
    public void onMessage(Message message) {
        try {
            TextMessage text = (TextMessage) message;
            String msg = text.getText();
            String jmsType = message.getJMSType();
            //获取已连接的在线机构
            for (String organId : WebSocketHandler.webSocketSessionMap.keySet()) {
                boolean flag = jmsType.equalsIgnoreCase("ID:" + organId);
                if (flag) {
                    boolean hasConsumed = consumeMsg(String.valueOf(organId), msg);
                    if (!hasConsumed) {
                        return;
                    }
                }
            }
            message.acknowledge();
        } catch (JMSException e) {
            log.error("activemq convert message fail");
            log.error(e.getMessage(), e);
        }
    }

多谢大佬!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文