我设置的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);
}
}
多谢大佬!