如何配置
BrokerService
要丢弃未使用的邮件?
我不希望我的客户端在订阅服务器队列时收到服务器发送的所有旧消息。
这是我目前的经纪人:
BrokerService ret = new BrokerService();
ret.setPersistent(false);
ret.setUseJmx(false);
ret.addConnector("tcp://0.0.0.0:4444");
目前,我的服务器首先启动并发送大约10条消息。之后,我的客户机订阅了队列,它接收到在没有客户机订阅时发送的所有10条消息。我不想要这种行为。
已解决
@Bean
public JmsTemplate jsmTemplate(ConnectionFactory connectionFactory) {
JmsTemplate ret = new JmsTemplate();
ret.setConnectionFactory(connectionFactory);
ret.setMessageConverter(jacksonJmsMessageConverter());
// Enable the TimeToLive
ret.setExplicitQosEnabled(true);
// live time in millis of every sent message, unconsumed messages will be removed from the queue
ret.setTimeToLive(10000L);
return ret;
}
然后我发送这样的消息:
// after 10 seconds this message will be discarded from the queue
jmsTemplate.convertAndSend("messages", "hello from server");
解决方案#2
我创建了一个主题而不是队列。
http://javasampleapproach.com/java-integration/activemq-work-spring-jms-activemq-topic-publisher-subcribers-pattern-using-springboot