Spring AMQP
Spring AMQP项目将核心Spring概念应用于基于AMQP的消息传递解决方案的开发。
它提供了一个“模板”,作为发送和接收消息的高级抽象。
它还提供了对带有“侦听器容器”的消息驱动pojo的支持。
这些库有助于管理AMQP资源,同时促进依赖注入和声明性配置的使用。在所有这些情况下,您将看到与Spring框架中的JMS支持的相似之处。
项目由两部分组成; spring-amqp 是基本抽象,spring-rabbit 是 RabbitMQ 实现。
Features
用于异步处理入站消息的侦听器容器
用于发送和接收消息的RabbitTemplate
用于自动声明队列、交换器和绑定的RabbitAdmin
快速开始
jar 引入
<dependencies>
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
<version>2.0.6.RELEASE</version>
</dependency>
</dependencies>
代码
- QuickStart.java
/*
* Copyright (c) 2018. houbinbin Inc.
* jms All rights reserved.
*/
package com.github.houbb.jms.learn.spring.amqp.hello;
import org.springframework.amqp.core.AmqpAdmin;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitAdmin;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
public class QuickStart {
public static void main(String[] args) {
ConnectionFactory connectionFactory = new CachingConnectionFactory();
AmqpAdmin admin = new RabbitAdmin(connectionFactory);
admin.declareQueue(new Queue("myqueue"));
AmqpTemplate template = new RabbitTemplate(connectionFactory);
template.convertAndSend("myqueue", "foo");
String foo = (String) template.receiveAndConvert("myqueue");
System.out.println(foo);
}
}
日志
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Sep 18, 2018 4:29:28 PM org.springframework.amqp.rabbit.connection.CachingConnectionFactory createBareConnection
信息: Attempting to connect to: houbinbindeMacBook-Pro.local:5672
Sep 18, 2018 4:29:28 PM org.springframework.amqp.rabbit.connection.CachingConnectionFactory createBareConnection
信息: Created new connection: SpringAMQP#43a25848:0/SimpleConnection@47f6473 [delegate=amqp://guest@192.168.1.103:5672/, localPort= 54867]
foo
个人感想
spring 这是想做一套规范,可能是认为 jms 不够方便。
暂时不做深入学习,这样的话 rabbitmq 简直被 spring AMQP 带起来了。
参考资料
https://spring.io/projects/spring-amqp