我已经开始启动HornetQ jms(一个外部服务器)配置并且它在正面场景下工作。但是我只是在没有错误的情况下尝试从队列中删除消息(如果没有错误则确认消息)通过将ack模式配置为客户端。但是,当我看到队列时,消息将被删除。这是弹簧靴配置。
@Component
public class JmsMessageListener {
private static Logger LOG = LoggerFactory.getLogger(JmsMessageListener.class);
@JmsListener(destination = "KpRqQueue")
public void onMessage(TextMessage message) {
TextMessage txtMsg = message;
String txt;
try {
txt = txtMsg.getText();
LOG.info("Hey I recevied a message {}", txt);
if ("Hello".equals(txt)) {
throw new JMSException("An error");
}
message.acknowledge();
} catch (JMSException e) {
throw JmsUtils.convertJmsAccessException(e);
}
}
}
这是配置文件。
spring.hornetq.mode=native
spring.hornetq.host=localhost
spring.hornetq.port=5445
spring.jms.listener.acknowledge-mode=CLIENT
如何启用客户端确认模式。另请告诉我如何手动创建defaulemessagelistenercontainer.