RabbitMQ快速上手及入门
概念
概念:
-
publisher
:生产者,也就是发送消息的一方 -
consumer
:消费者,也就是消费消息的一方 -
queue
:队列,存储消息。生产者投递的消息会暂存在消息队列中,等待消费者处理 -
exchange
:交换机,负责消息路由。生产者发送的消息由交换机决定投递到哪个队列。 -
virtual host
:虚拟主机,起到数据隔离的作用。每个虚拟主机相互独立,有各自的exchange、queue
helloworld快速上手
启动mq服务
brew services start rabbitmq
浏览器打开:http://localhost:15672/
可以看到成功进入
Username和Password均为guest
引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
配置文件
spring:
rabbitmq:
host: localhost #域名
port: 5672 #端口
username: guest #用户名
password: guest #密码
生产者定义
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.annotation.Exchange;
import org.springframework.amqp.rabbit.annotation.Queue;
import org.springframework.amqp.rabbit.annotation.QueueBinding;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
@Component
@RequiredArgsConstructor
@Slf4j
public class SpringRabbitListener {
@RabbitListener(bindings = @QueueBinding(
value = @Queue(name = "test.queue", durable = "true"),
exchange = @Exchange(name = "test.direct"),
key = "test.key"
))
public void listenPaySuccess(String msg){
System.out.println("消费者接收到topic.queue的消息:【" + msg + "】");
}
}
消费者定义
import org.junit.jupiter.api.Test;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
public class SpringAmqtest {
@Autowired
private RabbitTemplate rabbitTemplate;
@Test
public void testQueue(){
rabbitTemplate.convertAndSend("test.direct","test.key", "测试下发送消息");
}
}
启动springboot服务
控制台消息
可以看到生产者发送消息且成功被消费者消费
参考资料:
黑马RabbitMQ