您可以从“消息使用者微服务”中使用客户端确认模式。由于您使用的是Spring JmsListener
,因此可以使用containerFactory
定义侦听器容器,然后可以使用sessionAcknowledgeMode
在侦听器容器上设置所需的模式。有关您可能想在此处使用哪种确认模式的更多详细信息,请参见the Spring documentation。
从ActiveMQ客户端的角度来看,您可以配置重新交付语义,但是如果发生故障,可以根据需要进行配置。有关更多信息,请参见ActiveMQ documentation。
,
好的,所以我能够解决这个难题,这就是您的配置应该是什么样的(感谢贾斯汀的宝贵意见):
@Bean
public ActiveMQConnectionFactory connectionFactory() {
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory();
connectionFactory.setBrokerURL(brokerUrl);
connectionFactory.setPassword(userName);
connectionFactory.setUserName(password);
connectionFactory.setTrustAllPackages(true);
connectionFactory.setRedeliveryPolicy(redeliveryPolicy());
return connectionFactory;
}
@Bean
public JmsTemplate jmsTemplate() {
JmsTemplate template = new JmsTemplate();
template.setConnectionFactory(connectionFactory());
return template;
}
@Bean
public DefaultJmsListenerContainerFactory jmsListenerContainerFactory() {
DefaultJmsListenerContainerFactory listenerCF = new DefaultJmsListenerContainerFactory();
listenerCF.setConnectionFactory(connectionFactory());
listenerCF.setSessionAcknowledgeMode(Session.AUTO_ACKNOWLEDGE);
listenerCF.setSessionTransacted(true);
return listenerCF;
}
@Bean
public RedeliveryPolicy redeliveryPolicy() {
RedeliveryPolicy redeliveryPolicy = new RedeliveryPolicy();
redeliveryPolicy.setRedeliveryDelay(600000L); //keep trying every 10 minutes
redeliveryPolicy.setMaximumRedeliveries(-1); //Keep trying till its successfully inserted
return redeliveryPolicy;
}
本文链接:https://www.f2er.com/3127198.html