rabbitMq 消息队列(一)
安装rabbitMq (docker 安装方式)
docker search rabbitmq ---搜索rabbitmq的镜像 docker pull rabbitmq:3.7.7-management ---拉取镜像 docker run -d --name rabbitmq3.7.7 -p 5672:5672 -p 15672:15672 2888deb59dfc --启动容器
完成安装后可访问ip:15672 进入web管理端 初始账号 guest 密码guest (也可在启动命令上参数指定 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin)

新建项目中使用的用户以及虚拟主机

点击admin用户 添加虚拟主机 /

编写程序测试
新建spring boot 工程 添加 rabbitmq依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
配置文件
spring.rabbitmq.username=admin spring.rabbitmq.password=admin spring.rabbitmq.host=39.96.77.182 spring.rabbitmq.port=5672 spring.rabbitmq.virtual-host=/ server.port=8085
添加mq配置类
@Configuration
public class RabbitMQConfig {
/**
* 创建交换机
* @return
*/
@Bean
public FanoutExchange fanoutExchange(){
return new FanoutExchange("my_exchange");
}
/**
* 创建交换队列
* @return
*/
@Bean
public Queue autoDeleteQueue() {
return new Queue("my_queue", true, false, true, null);
}
/**
* 进行交换机和队列绑定
* @param fanoutExchange 交换机
* @param autoDeleteQueue 队列
* @return
*/
@Bean
public Binding binding(FanoutExchange fanoutExchange, Queue autoDeleteQueue) {
return BindingBuilder.bind(autoDeleteQueue).to(fanoutExchange);
}
}
客户端监听类
@Component
public class ConsumerListener {
@RabbitListener(queues = "my_queue")
public void reciveMessage(Message message){
String msg=new String(message.getBody());
System.out.println(msg);
}
}
启动项目后查看web端

已经完成交换机创建和绑定 使用管理端发送消息 查看客户端监听结果

结果

程序中发送消息
@RestController
public class ProviderController {
@Autowired
private RabbitTemplate rabbitTemplate;
@GetMapping("sendMessage")
public String sendMessage(){
rabbitTemplate.convertAndSend("my_exchange","","我是消息提供者 发送了一条消息");
return "success";
}
}
浏览器访问触发
客户端收到消息

浙公网安备 33010602011771号