美文网首页
深入学习java笔记-14.SpringBoot2.1之Acti

深入学习java笔记-14.SpringBoot2.1之Acti

作者: 笨鸡 | 来源:发表于2019-05-08 17:23 被阅读0次

    MQ的使用场景

    MQ未使用.png
    MQ使用.png
    pom.xml
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-activemq</artifactId>
                <version>2.1.4.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.apache.activemq</groupId>
                <artifactId>activemq-pool</artifactId>
                <version>5.15.9</version>
            </dependency>
            <dependency>
                <groupId>org.messaginghub</groupId>
                <artifactId>pooled-jms</artifactId>
            </dependency>
    
    application.yml
    spring:
      jms:
        pub-sub-domain: true
      activemq:
        broker-url: tcp://localhost:61616
        user: admin
        password: admin
        in-memory: true
        pool:
          enabled: true
          max-connections: 100
    
    SpringStartApplication.java
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.web.servlet.ServletComponentScan;
    import org.springframework.jms.annotation.EnableJms;
    import org.springframework.scheduling.annotation.EnableAsync;
    import org.springframework.scheduling.annotation.EnableScheduling;
    
    @SpringBootApplication
    @ServletComponentScan
    //@EnableAsync
    //@EnableScheduling
    @EnableJms
    public class SpringStartApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(SpringStartApplication.class, args);
        }
    }
    
    ActiveMQConfig.java
    import org.apache.activemq.command.ActiveMQQueue;
    import org.apache.activemq.command.ActiveMQTopic;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.jms.config.DefaultJmsListenerContainerFactory;
    import org.springframework.jms.config.JmsListenerContainerFactory;
    
    import javax.jms.ConnectionFactory;
    import javax.jms.Queue;
    import javax.jms.Topic;
    
    @Configuration
    public class ActiveMQConfig {
        @Bean
        public Queue queue() {
            return new ActiveMQQueue("common.queue");
        }
    
        @Bean
        public Topic topic() {
            return new ActiveMQTopic("news.topic");
        }
    
        @Bean
        public JmsListenerContainerFactory<?> jmsListenerContainerTopic(ConnectionFactory activeMQConnectionFactory) {
            DefaultJmsListenerContainerFactory bean = new DefaultJmsListenerContainerFactory();
            bean.setPubSubDomain(true);
            bean.setConnectionFactory(activeMQConnectionFactory);
            return bean;
        }
    
    }
    
    ActiveMQConsumer.java
    @Component
    public class ActiveMQConsumer{
    
        @JmsListener(destination = "common.queue")
        public void receiveQueue(String text){
            System.out.println("commonConsumer收到的报文为:" + text);
        }
    
        @JmsListener(destination = "order.queue")
        public void receiveQueue(String text){
            System.out.println("orderConsumer收到的报文为:" + text);
        }
    
        @JmsListener(destination = "news.topic", containerFactory="jmsListenerContainerTopic")
        public void receive1(String text){
            System.out.println("topic receive1收到的报文为:" + text);
        }
    
        @JmsListener(destination = "news.topic", containerFactory="jmsListenerContainerTopic")
        public void receive2(String text){
            System.out.println("topic receive2收到的报文为:" + text);
        }
    
        @JmsListener(destination = "news.topic")
        public void receive3(String text){
            System.out.println("topic receive3收到的报文为:" + text);
        }
    
    }
    
    ActiveMQProducerService.java
    import javax.jms.Destination;
    
    public interface ActiveProducerService{
        public void sendMessage(Destination destination, final String message);
        public void sendMessage(final String message);
        public void publish(String msg);
    }
    
    ActiveMQProducerServiceImpl.java
    import com.ctgu.springstart.service.ProducerService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.jms.core.JmsMessagingTemplate;
    import org.springframework.stereotype.Service;
    
    import javax.jms.Destination;
    import javax.jms.Queue;
    import javax.jms.Topic;
    
    @Service
    public class ProducerServiceImpl implements ProducerService {
    
        @Autowired
        private JmsMessagingTemplate jmsTemplate;
    
        @Autowired
        private Queue queue;
    
        @Autowired
        private Topic topic;
    
        @Override
        public void sendMessage(Destination destination, String message) {
            jmsTemplate.convertAndSend(destination, message);
        }
    
        @Override
        public void sendMessage(String message) {
            jmsTemplate.convertAndSend(queue, message);
        }
    
        @Override
        public void publish(String msg) {
            jmsTemplate.convertAndSend(topic, msg);
        }
    }
    
    ActiveMQController.java
    import com.ctgu.springstart.domain.JsonData;
    import com.ctgu.springstart.service.ProducerService;
    import org.apache.activemq.command.ActiveMQQueue;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import javax.jms.Destination;
    
    @RestController
    @RequestMapping("/api/activemq")
    public class ActiveMQController {
    
        @Autowired
        private ProducerService producerService;
    
        @GetMapping("order")
        public Object order(String msg){
            Destination destination = new ActiveMQQueue("order.queue");
            producerService.sendMessage(destination, msg);
            return JsonData.builder().msg("activeMQ order success").build();
        }
    
        @GetMapping("common")
        public Object common(String msg){
            producerService.sendMessage(msg);
            return JsonData.builder().msg("activeMQ common success").build();
        }
    
        @GetMapping("topic")
        public Object topic(String msg){
            producerService.publish(msg);
            return JsonData.builder().msg("activeMQ topic success").build();
        }
    
    }
    

    相关文章

      网友评论

          本文标题:深入学习java笔记-14.SpringBoot2.1之Acti

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