(二)springboot中使用Rabbitmq

小碼哥222發表於2020-12-21

一、在springboot專案中使用Rabbitmq

業務模型圖如下:
使用rabbitMQ的routing交換機模式,視訊處理程式監聽視訊處理佇列
在這裡插入圖片描述

二、訊息傳送端使用步驟:

2.1首先引入rabbitmq的啟動依賴

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

2.2rabbitmq的引數配置 及Queue佇列名稱和rountingkey配置


#rabbitmq連線引數
spring
  rabbitmq
    host:localhost
    port:5672
    username:lq
    password:123456

  

# 佇列和rounting-key配置
xc‐service‐manage‐media: 
  mq:
    queue‐media‐video‐processor: queue_media_video_processor 
	routingkey‐media‐video: routingkey_media_video

2.3、RabbitMQ配置如下:

下面的配置類程式碼,生產方和消費方都是需要寫的,因為不知道哪一方先啟動,因此為了兩方都不報錯,所以 兩方都配置。

@Configuration
public class RabbitMQConfig {
	//Exchange
    public static final String EX_MEDIA_PROCESSTASK = "ex_media_processor";

    //視訊處理佇列
    @Value("${xc‐service‐manage‐media.mq.queue‐media‐video‐processor}")
    public String queue_media_video_processtask;
    
    //視訊處理路由
    @Value("${xc‐service‐manage‐media.mq.routingkey‐media‐video}")
    public String routingkey_media_video;

    /*** 
    * 配置一個交換機 Bean
    * @return the exchange
    *  */
    @Bean(EX_MEDIA_PROCESSTASK)
    public Exchange EX_MEDIA_VIDEOTASK() {
        return ExchangeBuilder.directExchange(EX_MEDIA_PROCESSTASK).durable(true).build();
    }

    //宣告一個佇列 Bean
    @Bean("queue_media_video_processtask")
    public Queue QUEUE_PROCESSTASK() {
        Queue queue = new Queue(queue_media_video_processtask, true, false, true);
        return queue;
    }

    /*** 佇列 與交換機進行繫結(指定能夠對映到這個佇列的 rounting-key的規則)
     * 
     * @param queue the queue 
     * * @param exchange the exchange 
     * * @return the binding 
     * */
    @Bean
    public Binding binding_queue_media_processtask(@Qualifier("queue_media_video_processtask") Queue queue, @Qualifier(EX_MEDIA_PROCESSTASK) Exchange exchange) {
        return BindingBuilder.bind(queue).to(exchange).with(routingkey_media_video).noargs();
    }
}

2.4訊息傳送程式碼:

在這裡插入圖片描述

2.5進行訊息校驗

傳送過去的訊息 可以在rabbitmq的web介面端進行校驗,檢視交換器、佇列是否建立,,訊息是否傳送過去。

三、訊息接收端使用步驟

3.1接收端的程式碼:

在這裡插入圖片描述
注意:

  • 每個使用了@RabbitListener註解的方法,可以用來監聽佇列。queues={},大括號中可以寫多個佇列名,,用來監聽多個佇列。
  • 方法的這3個形參,都可以拿到傳送端發來的訊息。
    引數1:是訊息字串,把傳送端傳送的訊息 轉成了字串。
    引數2:訊息物件,裡面有很多訊息相關的屬性
    引數3:通道,是一種原始的方式,,通過這種方式也可以拿到。

相關文章