spring boot整合ArtemisMQ进行手动消息确认

1、SpringBoot整合ArtemisMQ进行手动消息确认使用的是:

factory.setSessionTransacted(false);

factory.setSessionAcknowledgeMode(ActiveMQJMSConstants.INDIVIDUAL_ACKNOWLEDGE);

2、SpringBoot整合ActiveMQ进行手动消息确认使用的是:

factory.setSessionTransacted(false);

factory.setSessionAcknowledgeMode(4);

java 复制代码
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;
    }
}
相关推荐
码事漫谈3 分钟前
AI智能体全球应用调查报告:从“对话”到“做事”的变革
后端
Chen不旧8 分钟前
easyexcel实现excel读取
java·excel·easyexcell
码界奇点22 分钟前
Spring Web MVC构建现代Java Web应用的基石
java·前端·spring·设计规范
绝无仅有41 分钟前
某大厂跳动Java面试真题之问题与解答总结(二)
后端·面试·github
绝无仅有41 分钟前
某大厂跳动Java面试真题之问题与解答总结(三)
后端·面试·架构
板板正1 小时前
EasyExcel实现普通导入导出以及按模板导出excel文件
java·excel
野犬寒鸦1 小时前
从零起步学习Redis || 第十章:主从复制的实现流程与常见问题处理方案深层解析
java·服务器·数据库·redis·后端·缓存
luopandeng1 小时前
amd npt技术 对比 intel ept 技术
java·linux·网络
编啊编程啊程1 小时前
兼职管理平台
java·spring boot·rpc·dubbo·nio
吃饭最爱1 小时前
java项目中前后端结合的要点
java