zoukankan      html  css  js  c++  java
  • Springboot简单集成ActiveMQ

    Springboot简单集成ActiveMQ

    消息发送者的实现

    pom.xml添加依赖

    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-activemq</artifactId>
    </dependency>
    <dependency>
            <groupId>org.messaginghub</groupId>
            <artifactId>pooled-jms</artifactId>
    </dependency>
    

    测试代码

    @Autowired
    JmsMessagingTemplate template;
    @Test
    public void contextLoads() {
        template.convertAndSend("tym_002","hello_02");
    }
    

    消息接受者的实现

    pom文件依赖和发送者一样

    创建JmsListener

    int a=0;
    @JmsListener(destination = "tym_002",containerFactory = "jmsQueryListenerFactory")
    public void testreceiveQueue(TextMessage textMessage, Session session) throws JMSException {
        try {
            int i=1/0;
            System.out.println("接受到:"+textMessage.getText());
            textMessage.acknowledge();
        } catch (Exception e) {
            a++;
            System.out.println("重试了 :"+a);
            session.recover();
        }
    }
    

    其中containerFactory的赋值为自定义的配置类:

    @Configuration
    public class ActiveMqConfig {
    @Bean
    public RedeliveryPolicy redeliveryPolicy(){
        RedeliveryPolicy redeliveryPolicy=new RedeliveryPolicy();
        redeliveryPolicy.setUseExponentialBackOff(true);
        redeliveryPolicy.setMaximumRedeliveries(3);
        redeliveryPolicy.setInitialRedeliveryDelay(1000L);
        redeliveryPolicy.setBackOffMultiplier(2);
        redeliveryPolicy.setMaximumRedeliveryDelay(-1);
        return redeliveryPolicy;
    }
    @Bean
    public ActiveMQConnectionFactory getActiveMQConnectionFactory(@Autowired RedeliveryPolicy redeliveryPolicy,@Value("${spring.activemq.broker-url}") String url){
        ActiveMQConnectionFactory activeMQConnectionFactory=new ActiveMQConnectionFactory(url);
        activeMQConnectionFactory.setRedeliveryPolicy(redeliveryPolicy);
        return activeMQConnectionFactory;
    }
    @Bean
    public JmsTemplate getJmsTemplate(@Autowired ActiveMQConnectionFactory factory){
        JmsTemplate jmsTemplate=new JmsTemplate();
        jmsTemplate.setConnectionFactory(factory);
        return jmsTemplate;
    }
    @Bean(name="jmsQueryListenerFactory")
    public DefaultJmsListenerContainerFactory jmsListenerContainerFactory(@Autowired ActiveMQConnectionFactory activeMQConnectionFactory){
        DefaultJmsListenerContainerFactory factory=new DefaultJmsListenerContainerFactory();
        factory.setConnectionFactory(activeMQConnectionFactory);
        factory.setConcurrency("1-10");
        factory.setRecoveryInterval(1000L);
        factory.setSessionAcknowledgeMode(4);
        return factory;
    }
    }
    

    其中factory.setSessionAcknowledgeMode(4)设置4是手动接受消息,防止在接受自动消息时,抛出异常导致消息无效。

  • 相关阅读:
    监督学习——AdaBoost元算法提高分类性能
    监督学习——logistic进行二分类(python)
    监督学习——朴素贝叶斯分类理论与实践
    nrm 工具的使用
    Linux下安装MySQL
    Node环境配置
    07.移动端类库
    06.网页布局
    05.预处理器
    04.触屏事件
  • 原文地址:https://www.cnblogs.com/tanyiming/p/11123126.html
Copyright © 2011-2022 走看看