springboot配置ActiveMQ
@Configuration
public class ActiveMQConfig {
@Value("${spring.activemq.broker-url}")
private String brokerUrl;
@Value("${spring.activemq.user}")
private String username;
@Value("${spring.activemq.password}")
private String password;
@Bean
public ActiveMQConnectionFactory activeMQConnectionFactory() {
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory();
factory.setBrokerURL(brokerUrl);
factory.setUserName(username);
factory.setPassword(password);
return factory;
}
@Bean
public JmsTemplate jmsTemplate(ConnectionFactory connectionFactory) {
JmsTemplate jmsTemplate = new JmsTemplate(connectionFactory);
jmsTemplate.setDeliveryPersistent(true); // 设置消息持久化
jmsTemplate.setExplicitQosEnabled(true); // 开启QoS
jmsTemplate.setPriority(4); // 设置消息优先级
jmsTemplate.setTimeToLive(60000); // 设置消息过期时间
jmsTemplate.setSessionTransacted(true); // 开启事务
jmsTemplate.setSessionAcknowledgeMode(Session.CLIENT_ACKNOWLEDGE); // 设置手动确认机制
jmsTemplate.setDeliveryMode(DeliveryMode.PERSISTENT); // 消息持久化
jmsTemplate.setTimeToLive(60000); // 设置
}
@Bean
public RedeliveryPolicy redeliveryPolicy() {
RedeliveryPolicy redeliveryPolicy = new RedeliveryPolicy();
redeliveryPolicy.setMaximumRedeliveries(3); // 设置最大重试次数为3
redeliveryPolicy.setInitialRedeliveryDelay(5000); // 设置初始重试间隔为5秒
redeliveryPolicy.setBackOffMultiplier(2); // 设置重试间隔递增倍数为2
return redeliveryPolicy;
}
}