在 ActiveMQ Artemis 中,可以通过配置选择持久化消息以确保 HA 故障转移期间不会丢失消息。以下是代码示例,其中使用了持久化和异步 ACK。
@Bean
public ActiveMQConnectionFactory connectionFactory() {
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory();
connectionFactory.setBrokerURL("tcp://localhost:61616");
connectionFactory.setUser("admin");
connectionFactory.setPassword("admin");
return connectionFactory;
}
@Bean
public PooledConnectionFactory jmsFactory() {
PooledConnectionFactory pooledConnectionFactory = new PooledConnectionFactory();
pooledConnectionFactory.setConnectionFactory(connectionFactory());
pooledConnectionFactory.setMaxConnections(5);
return pooledConnectionFactory;
}
@Bean
public JmsTemplate jmsTemplate() {
JmsTemplate jmsTemplate = new JmsTemplate(jmsFactory());
jmsTemplate.setDeliveryMode(DeliveryMode.PERSISTENT);
jmsTemplate.setSessionAcknowledgeMode(Session.CLIENT_ACKNOWLEDGE);
return jmsTemplate;
}