美文网首页
ActiveMQ(三)整合spring-boot

ActiveMQ(三)整合spring-boot

作者: 慕容鸿煊 | 来源:发表于2019-03-24 17:05 被阅读0次

    配置

    spring.activemq.broker-url=tcp://localhost:61616
    spring.activemq.user=admin
    spring.activemq.password=admin
    spring.activemq.pool.enabled=true
    
    
           <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-activemq</artifactId>
            </dependency>
            <dependency>
                <groupId>org.apache.activemq</groupId>
                <artifactId>activemq-pool</artifactId>
            </dependency>
    

    配置类

    @Configuration
    @EnableJms
    public class ActiveMqConfiguration {
    
        @Value("${spring.activemq.user}")
        private String usrName;
    
        @Value("${spring.activemq.password}")
        private String password;
    
        @Value("${spring.activemq.broker-url}")
        private String brokerUrl;
    
        @Bean
        public ConnectionFactory connectionFactory(){
            ActiveMQConnectionFactory connectionFactory
                    = new ActiveMQConnectionFactory();
            connectionFactory.setBrokerURL(brokerUrl);
            connectionFactory.setUserName(usrName);
            connectionFactory.setPassword(password);
            return connectionFactory;
        }
    
        @Bean("jmsTopicListenerContainerFactory")
        public JmsListenerContainerFactory jmsTopicListenerContainerFactory(
                ConnectionFactory connectionFactory
        ){
            DefaultJmsListenerContainerFactory factory
                    = new DefaultJmsListenerContainerFactory();
            factory.setConnectionFactory(connectionFactory);
            factory.setPubSubDomain(true);
            return factory;
        }
    
    }
    

    生产者 Queue destination定义调用同其他

    @Service
    public class ProducerQueue {
    
        @Autowired
        private JmsMessagingTemplate jmsTemplate;
        @Autowired
        private JmsTemplate template;//可以做更细微的控制
    
        // 发送消息,destination是发送到的队列,message是待发送的消息
        public void sendMessage(Destination destination, final String message){
            jmsTemplate.convertAndSend(destination, message);
            template.send(destination, new MessageCreator() {
                @Override
                public Message createMessage(Session session)
                        throws JMSException {
                    TextMessage msg = session.createTextMessage();
                    msg.setText("othre information");
                    return msg;
                }
            });
        }
    
    
    }
    

    生产者 Topic destination定义调用同其他

    @Service
    public class ProducerTopic {
    
        @Autowired
        private JmsMessagingTemplate jmsTemplate;
    
        // 发送消息,destination是发送到的队列,message是待发送的消息
        public void sendMessage(Destination destination, final String message){
            jmsTemplate.convertAndSend(destination, message);
        }
    
    
    }
    

    消费者Queue

    @Component
    public class ConsumerAQueue {
        // 使用JmsListener配置消费者监听的队列,其中text是接收到的消息
        @JmsListener(destination = "springboot.queue")
        public void receiveQueue(String text){
            
            System.out.println(this.getClass().getName()+" receive msg:"+text);
        }
    }
    
    

    消费者Topic

    @Component
    public class ConsumerATopic {
        // 使用JmsListener配置消费者监听的队列,其中text是接收到的消息
        @JmsListener(destination = "springboot.topic",
                containerFactory = "jmsTopicListenerContainerFactory"
        )
        public void receiveTopic(String text) {
            
            System.out.println(this.getClass().getName()+" 收到的报文为:"+text);
        }
    }
    

    相关文章

      网友评论

          本文标题:ActiveMQ(三)整合spring-boot

          本文链接:https://www.haomeiwen.com/subject/whiuvqtx.html