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;
    }
}
相关推荐
雨中飘荡的记忆7 分钟前
优惠券系统设计与实现
java
1***t8277 分钟前
将 vue3 项目打包后部署在 springboot 项目运行
java·spring boot·后端
芬加达12 分钟前
leetcode34
java·数据结构·算法
__万波__15 分钟前
二十三种设计模式(三)--抽象工厂模式
java·设计模式·抽象工厂模式
疯狂的程序猴19 分钟前
iOS 日志管理的工程化实践 构建从开发调试到系统日志分析的多工具协同体系
后端
申阳27 分钟前
Day 17:03. 基于 Tauri 2.0 开发后台管理系统-登录页面开发
前端·后端·程序员
疯狂的程序猴38 分钟前
Transporter 在 iOS 上架流程中的角色变化 本地上传工具的定位、局限与多工具协作趋势分析
后端
better_liang38 分钟前
每日Java面试场景题知识点之-线程池配置与优化
java·性能优化·面试题·线程池·并发编程
q***25139 分钟前
Windows操作系统部署Tomcat详细讲解
java·windows·tomcat
N***H48644 分钟前
使用Springboot实现MQTT通信
java·spring boot·后端