日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

springAMQP

發(fā)布時間:2024/4/13 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 springAMQP 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Spring AMQP

簡介

Sprin有很多不同的項目,其中就有對AMQP的支持:

Spring AMQP的頁面:http://spring.io/projects/spring-amqp

注意這里一段描述:

Spring-amqp是對AMQP協(xié)議的抽象實現(xiàn),而spring-rabbit 是對協(xié)議的具體實現(xiàn),也是目前的唯一實 現(xiàn)。底層使用的就是RabbitMQ。

依賴和配置

添加AMQP的啟動器:

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

在application.yml中添加RabbitMQ地址:

spring:rabbitmq:host: 192.168.56.101username: learnpassword: learnvirtual-host: /learn

監(jiān)聽者

在SpringAmqp中,對消息的消費者進行了封裝和抽象,一個普通的JavaBean中的普通方法,只要通過簡單的注解,就可以成為一個消費者。

@Component public class Listener {@RabbitListener(bindings = @QueueBinding(value = @Queue(value = "spring.test.queue", durable = "true"),exchange = @Exchange(value = "spring.test.exchange",ignoreDeclarationExceptions = "true",type = ExchangeTypes.TOPIC),key = {"#.#"}))public void listen(String msg){System.out.println("接收到消息:" + msg);} }
  • @Componet:類上的注解,注冊到Spring容器

  • @RabbitListener:方法上的注解,聲明這個方法是一個消費者方法,需要指定下面的屬性:

    • bindings:指定綁定關系,可以有多個。值是@QueueBinding的數(shù)組。@QueueBinding包含下面屬性:

      • value:這個消費者關聯(lián)的隊列。值是@Queue,代表一個隊列

      • exchange:隊列所綁定的交換機,值是@Exchange類型

      • key:隊列和交換機綁定的RoutingKey

類似listen這樣的方法在一個類中可以寫多個,就代表多個消費者。

?

AmqpTemplate

Spring最擅長的事情就是封裝,把他人的框架進行封裝和整合。

Spring為AMQP提供了統(tǒng)一的消息處理模板:AmqpTemplate,非常方便的發(fā)送消息,其發(fā)送方法:

紅框圈起來的是比較常用的3個方法,分別是:

  • 指定交換機、RoutingKey和消息體

  • 指定消息

  • 指定RoutingKey和消息,會向默認的交換機發(fā)送消息

測試代碼

@RunWith(SpringRunner.class) @SpringBootTest(classes = Application.class) public class MqDemo {@Autowiredprivate AmqpTemplate amqpTemplate;@Testpublic void testSend() throws InterruptedException {String msg = "hello, Spring boot amqp";this.amqpTemplate.convertAndSend("spring.test.exchange","a.b", msg);// 等待10秒后再結(jié)束Thread.sleep(10000);} }

?

總結(jié)

以上是生活随笔為你收集整理的springAMQP的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。