1.Basic Queue简单队列模型
什么是SpringAMQP?
SpringAmqp的官方地址:https://spring.io/projects/spring-amqp
案例:利用SpringAMQP实现HelloWorld 中的基础消息队列功能
流程如下:
1.在父工程中引入spring-amqp的依赖
因为publisher和consumer服务都需要amqp依赖,因此这里把依赖直接放至
父工程mq-demo中:
<!--AMQP依赖,包含RabbitMQ-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
2.在publisher服务中利用RabbitTemplate发送消息到simple.queue这个队列
1.在publisher服务中编写application.yml,添加mq连接信息:
spring:
rabbitmq:
host: 192.168.138.100 # 自己的虚拟机ip地址
port: 5672 # 端口
username: itcast
password: 123321
virtual-host: /
2.在publisher服务中新建一个测试类,编写测试方法:
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringAmqpTest {
@Autowired
private RabbitTemplate rabbitTemplate;
@Test
public void testSendMessage2SimpleQueue(){
String queuqname = "simple.queue";
String message = "hello,spring amqp!";
rabbitTemplate.convertAndSend(queuqname,message);
}
}
3.在consumer服务中编写消费逻辑,绑定simple.queue这个队列
1.在consumer服务中编写application.yml,添加mq连接信息:
spring:
rabbitmq:
host: 192.168.138.100 # 自己的虚拟机ip地址
port: 5672 # 端口
username: itcast
password: 123321
virtual-host: /
2.在consumer服务中新建一个类,编写消费逻辑:
@Component
public class SpringRabbitListener {
@RabbitListener(queues = "simple.queue")
public void listenSimpleQueue(String msg){
System.out.println("消费者接收到simple.queue的消息:【"+msg+"】");
}
}
总结
什么是AMQP?
- 应用间消息通信的一种协议,与语言和平台无关。
SpringAMQP如何发送消息?
- 引入amqp的starter依赖·配置RabbitMQ地址
- 利用RabbitTemplate的convertAndSend方法
springAMQP如何接收消息?
- 引入amqp的starter依赖
- 配置RabbitMQ地址
- 定义类,添加@Component注解
- 类中声明方法,添加@RabbitListener注解, 方法参数就时消息注意:消息一旦消费就会从队列删除,RabbitMQ没有消息回溯功能