springAMQP
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:指定綁定關(guān)系,可以有多個。值是@QueueBinding的數(shù)組。@QueueBinding包含下面屬性:
-
value:這個消費者關(guān)聯(lián)的隊列。值是@Queue,代表一個隊列
-
exchange:隊列所綁定的交換機,值是@Exchange類型
-
key:隊列和交換機綁定的RoutingKey
-
-
類似listen這樣的方法在一個類中可以寫多個,就代表多個消費者。
?
AmqpTemplate
Spring最擅長的事情就是封裝,把他人的框架進行封裝和整合。
Spring為AMQP提供了統(tǒng)一的消息處理模板:AmqpTemplate,非常方便的發(fā)送消息,其發(fā)送方法:
紅框圈起來的是比較常用的3個方法,分別是:
-
指定交換機、RoutingKey和消息體
-
指定消息
-
指定RoutingKey和消息,會向默認(rèn)的交換機發(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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 持久化
- 下一篇: 使用rabbitMQ实现数据同步