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;
    }
}
相关推荐
4Forsee37 分钟前
【Android】消息机制
android·java·前端
IT_陈寒44 分钟前
React性能优化:10个90%开发者不知道的useEffect正确使用姿势
前端·人工智能·后端
骚戴1 小时前
PDF或Word转图片(多线程+aspose+函数式接口)
java·开发语言
姓蔡小朋友1 小时前
SpringDataRedis
java·开发语言·redis
Apifox1 小时前
如何在 Apifox 中使用 OpenAPI 的 discriminator?
前端·后端·测试
yuuki2332331 小时前
【数据结构】双向链表的实现
c语言·数据结构·后端
刘一说1 小时前
深入解析 Spring Boot 数据访问:Spring Data JPA 与 MyBatis 集成实战
spring boot·tomcat·mybatis
CodeCraft Studio1 小时前
国产化Excel处理控件Spire.XLS教程:如何使用 Java 将 TXT 文本转换为 Excel 表格
java·word·excel·spire·文档格式转换·txt转excel
朝新_1 小时前
【SpringBoot】玩转 Spring Boot 日志:级别划分、持久化、格式配置及 Lombok 简化使用
java·spring boot·笔记·后端·spring·javaee
m0_748248021 小时前
Spring设计模式刨根问底
java·spring·设计模式