<input id="ohw05"></input>
  • <table id="ohw05"><menu id="ohw05"></menu></table>
  • <var id="ohw05"></var>
  • <code id="ohw05"><cite id="ohw05"></cite></code>
    <label id="ohw05"></label>
    <var id="ohw05"></var>
  • RabbitMQ(三):RabbitMQ與Spring Boot簡單整合

    RabbitMQ是目前非常熱門的一款消息中間件,不管是互聯網大廠還是中小企業都在大量使用。Spring Boot的興起,極大地簡化了Spring的開發,本文將使用Spring Boot與RabbitMQ進行簡單整合,實現生產和消費消息。

    配置

    Spring Boot使用了這么久,套路差不多摸清楚了。Spring Boot與其他組件進行整合,無非就是加入pom依賴,接著配置一些基本信息,然后就可以使用相關注解進行開發了。

    RabbitMQ也是相同的套路,第一步要引入依賴。要引入的依賴比較容易記,RabbitMQ實現了AMQP協議,引入依賴spring-boot-starter-amqp

               <!-- rabbitmq依賴 -->
               <dependency>
                   <groupId>org.springframework.boot</groupId>
                   <artifactId>spring-boot-starter-amqp</artifactId>
               </dependency>
    

    第二步要配置RabbitMQ連接信息,包括主機、端口號、用戶名和密碼。RabbitMQ配置信息:

    spring.rabbitmq.host=192.168.16.128
    spring.rabbitmq.port=5672
    spring.rabbitmq.username=guest
    spring.rabbitmq.password=guest
    

    如果沒有安裝RabbitMQ,我推薦使用Docker快速安裝和啟動,啟動命令:

    docker run -d --hostname my-rabbit -p 5672:5672 -p 15672:15672 rabbitmq:3.8.0-beta.4-management
    

    實現生產者和消費者

    第三步實現生產和消費者。

    生產者

    生產者用來生產消息并進行發送。需要用到RabbitTemplateRabbitTemplate是發送消息的關鍵類,convertAndSend方法可以指定消息發送的交換器、路由鍵、消息內容等。

    @Component
    public class Producer {
        @Autowired
        RabbitTemplate rabbitTemplate;
        
        public void produce() {
            String message =  new Date() + "Beijing";
            System.out.println("生產者生產消息=====" + message);
            rabbitTemplate.convertAndSend("rabbitmq_queue",  message);
        }
    }
    

    消費者

    消費者消費生產者發送的消息。實現消費者主要用到注解@RabbitListener@RabbitListener是一個功能強大的注解。這個注解里面可以注解配置@QueueBinding、@Queue、@Exchange直接通過這個組合注解一次性搞定多個交換機、綁定、路由、并且配置監聽功能等。

    1. 在RabbitMQ控制面板創建好隊列,使用@RabbitListener監聽隊列。
    @RabbitListener(queues = "rabbitmq_queue")
    
    1. 使用@RabbitListener自動創建隊列。
    @RabbitListener(queuesToDeclare = @Queue("myQueue"))
    
    1. 使用@RabbitListener自動創建隊列,并對Exchange和Queue進行綁定。
    @RabbitListener(bindings = @QueueBinding(value =  @Queue("myQueue"), key = "mobi", exchange = @Exchange("myExchange")))
    

    本文使用@RabbitListener自動創建一個隊列。

    @Component
    public class Consumer {
        @RabbitHandler
        @RabbitListener(queuesToDeclare = @Queue("rabbitmq_queue"))
        public void process(String message) {
            System.out.println("消費者消費消息=====" + message);
        }
    }
    

    測試

    第四步測試。為了方便,寫一個測試類生產消息。然后啟動工程,運行測試類,使生產者發送消息,不出意外消費者將會消費消息,在控制臺輸出信息。

    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class ApplicationTests {
    
        @Autowired
        Producer producer;
    
        @Test
        public void contextLoads() {
            producer.produce();
        }
    
    }
    

    操作之后可以在測試控制臺看到生產者消息發送成功,在該工程的控制臺看到消息消費成功。

    訪問RabbitMQ控制面板也會看到有消息。

    總結

    Spring Boot極大的簡化各種組件的使用,在實際應用中,當一個服務處理完成之后可以將消息放進RabbitMQ消息隊列,另外一個服務從隊列中取消息進行消費,這樣可以降低服務之間的耦合,實現一些異步的操作。本文僅作為一個簡單demo供參考。

    GitHub地址

    posted @ 2019-07-27 18:46  James_Shangguan  閱讀(13560)  評論(1編輯  收藏  舉報
    国产美女a做受大片观看