activemq手动应答失效
无福卷毛 2019-04-11 01:47:00
```
spring:
activemq:
broker-url: tcp://***.***.***.***:61616
user: admin
password: admin
send-timeout: 0ms
jms:
pub-sub-domain: true
```
```
@Configuration
public class ActivemqConfig {
@Bean
public Queue ackQueue() {
return new ActiveMQQueue("ackQueue");
}
/***
* AUTO_ACKNOWLEDGE = 1 自动确认 CLIENT_ACKNOWLEDGE = 2 客户端手动确认 DUPS_OK_ACKNOWLEDGE = 3 自动批量确认
* SESSION_TRANSACTED = 0 事务提交并确认
*/
@Bean
public JmsListenerContainerFactory<?> ackQueueListener(ConnectionFactory connectionFactory) {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
factory.setPubSubDomain(false);
factory.setSessionTransacted(false);
factory.setSessionAcknowledgeMode(Session.CLIENT_ACKNOWLEDGE);
factory.setConnectionFactory(connectionFactory);
return factory;
}
}
```
```
@ResponseBody
@RequestMapping("/mq/queue/ack")
public void queueAck(HttpServletRequest request, HttpServletResponse response) {
log.info("queueAck.send");
Message message = new ActiveMQMessage();
try {
message.setStringProperty("value", "value_content");
} catch (JMSException e) {
e.printStackTrace();
}
jmsTemplate.convertAndSend(ackQueue, message);
}
```
```
@JmsListener(destination = "ackQueue", containerFactory = "ackQueueListener")
public void ackQueueConsumerWithoutException(Message message) {
try {
log.info("ackQueueConsumerWithoutException:" + message.getStringProperty("value"));
Thread.sleep(5000);
log.info("i'm not ack");
} catch (Exception e) {
e.printStackTrace();
}
}
```
每次发送一个消息 结束自动出队 看着是ack了 但我没有手动ack