在 Activemq Spring Boot 中使用 Redelivery Policy 时,可能会遇到无法正常工作的情况。这个问题的解决方法是设置 ActiveMQConnectionFactory 的 RedeliveryPolicy 属性,并将其与 JmsTemplate 一起使用。
以下是示例代码:
@Configuration
public class ActiveMQConfig {
@Value("${spring.activemq.broker-url}")
private String brokerUrl;
@Bean
public ActiveMQConnectionFactory activeMQConnectionFactory() {
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory();
factory.setBrokerURL(brokerUrl);
factory.setRedeliveryPolicy(redeliveryPolicy());
return factory;
}
@Bean
public RedeliveryPolicy redeliveryPolicy() {
RedeliveryPolicy redeliveryPolicy = new RedeliveryPolicy();
redeliveryPolicy.setMaximumRedeliveries(3);
redeliveryPolicy.setInitialRedeliveryDelay(TimeUnit.SECONDS.toMillis(10));
redeliveryPolicy.setRedeliveryDelay(TimeUnit.SECONDS.toMillis(10));
return redeliveryPolicy;
}
@Bean
public JmsTemplate jmsTemplate() {
JmsTemplate template = new JmsTemplate();
template.setConnectionFactory(activeMQConnectionFactory());
return template;
}
}
在这个示例中,我们定义了一个 ActiveMQConnectionFactory bean 和一个 RedeliveryPolicy bean。在 ActiveMQConnectionFactory 中,我们设置了 RedeliveryPolicy 属性,并将其与 JmsTemplate 一起使用。在 RedeliveryPolicy bean 中,我们设置了最大重试次数、初始重试延迟和重试延迟。这将确保我们的 Redelivery Policy 可以正常工作。
上一篇:ActiveMQ属性SERIALIZABLE_PACKAGES发送ObjectMessage
下一篇:ActiveMQSpringJMShowdoIgetthedelayIsetoncethemessageisconsumed?