1、SpringBoot整合ArtemisMQ进行手动消息确认使用的是:
factory.setSessionTransacted(false);
factory.setSessionAcknowledgeMode(ActiveMQJMSConstants.INDIVIDUAL_ACKNOWLEDGE);
2、SpringBoot整合ActiveMQ进行手动消息确认使用的是:
factory.setSessionTransacted(false);
factory.setSessionAcknowledgeMode(4);
import org.apache.activemq.ActiveMQSession;
import org.apache.activemq.artemis.api.jms.ActiveMQJMSConstants;
import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.config.DefaultJmsListenerContainerFactory;import javax.jms.JMSException;
import javax.jms.Session;@Configuration
public class ArtemisConfig {@Bean(name = "artemisConnectionFactory")public ActiveMQConnectionFactory artemisConnectionFactory() throws JMSException {ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory();factory.setBrokerURL("tcp://127.0.0.1:61616");factory.setUser("admin");factory.setPassword("xxx");return factory;}/*** 生产者配置* @param connectionFactory* @return*/@Bean(name = "artemisJmsTemplate")public JmsTemplate activeMQJmsTemplate(@Qualifier("artemisConnectionFactory") ActiveMQConnectionFactory connectionFactory) {JmsTemplate jmsTemplate = new JmsTemplate(connectionFactory);jmsTemplate.setPubSubDomain(false);return jmsTemplate;}/*** 消费者配置* @param connectionFactory* @return*/@Bean(name = "artemisListenerContainerFactory")public DefaultJmsListenerContainerFactory artemisListenerContainerFactory(@Qualifier("artemisConnectionFactory") ActiveMQConnectionFactory connectionFactory) {DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();// 设置手动确认机制factory.setSessionTransacted(false);factory.setSessionAcknowledgeMode(ActiveMQJMSConstants.INDIVIDUAL_ACKNOWLEDGE); // 每个消息监听时都需要手动确认factory.setConnectionFactory(connectionFactory);// 设置为true以启用发布/订阅模式factory.setPubSubDomain(false);return factory;}
}