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

我设置的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);
        }
    }

多谢大佬!

阅读 3.1k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题