1. 程式人生 > >人工智慧 人臉識別 使用MQ實現解耦以及非同步

人工智慧 人臉識別 使用MQ實現解耦以及非同步

從之前的人臉識別的文章來看,使用到mq中間處理的主要在捉拍機獲取到的人臉識別的特徵傳送到rabbitMQ,然後單張人臉註冊的服務進行消費,這時候就是實現了服務之間的非同步處理以及解耦的作用
還有之前的批量處理上傳的人臉特徵的服務,使用的是同步的方式,這種方式確實有點low,需要非同步來處理提供使用者體驗,這裡就需要到MQ來實現非同步的響應客戶端。
當然其他的MQ場景,比如日誌,很多時候就是使用到Kafka來實現的在這裡插入圖片描述
這裡結合上一節提到的統一配置檔案來詳細說說RabbitMQ的使用
1.在消費端引入起步依賴 這裡是spring-boot-starter-amqp
2.配置檔案yml配置上rabbitMQ的配置 ,這裡是配置的是rabbitMQ的伺服器地址(預設地址是5672),而不是控制檯地址(埠為15672)
在這裡插入圖片描述


這裡也可以通過github修改配置的方式來統一配置
3.控制層設計方法來接收訊息,通過@RabbitListener(“myQueue”) 來定義監聽的MQ的名字。
在這裡插入圖片描述
4.開始單測
通過@AutoWired注入AmqpTemplate 使用amqp的方法
這裡需要注意的是測試類需要繼承已經有啟動類的註解 而且需要有@Component 注入IOC容器
在這裡插入圖片描述
如果沒有新建佇列就手動的建立,通過控制面板可以看到訊息傳送以及消費的過程
在這裡插入圖片描述
還有另外的一種方式來實現自動建立佇列
使用註解 @RabbitListener([email protected](“myQueue”))
在這裡插入圖片描述
如果需要繫結交換機就需要設定
@RabbitListener(
[email protected]
(
[email protected](“myQueue”),
[email protected](“myExchange”)
))

在這裡插入圖片描述
下節將會詳細說說什麼情況需要用交換機,什麼情況直接使用queue這個註解