springboot集成RabbitMQ
模拟服务端和客户端(消息从服务端发送,客户端监听并获取消息)环境准备:RabbitMQ是使用erlang语言开发的,所以要确认电脑有erlang语言环境,erlang语言安装配置及RabbitMQ安装配置参考博文erlang:https://blog.csdn.net/gengkunpeng/article/details/104950857mq:https://blog.csdn.net/qq_
·
环境准备:
RabbitMQ是使用erlang语言开发的,所以要确认电脑有erlang语言环境,erlang语言安装配置及RabbitMQ安装配置参考博文
erlang:https://blog.csdn.net/gengkunpeng/article/details/104950857
mq:https://blog.csdn.net/qq_47588845/article/details/107986373
模拟服务端和客户端(消息从服务端发送,客户端监听并获取消息。服务端和客户端都需要引入jar包 并配置yml)
配置:
maven jar包引入:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
yml配置:
或者:
spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
编码:
服务端:
rabbitmq配置:
import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.core.TopicExchange;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @Description: 队列配置,队列的名称,发送者和接受者的名称必须一致,否则接收不到消息
* @Author: chenping
* @Date: 2021-03-02
*/
@Configuration
public class RabbitMqConfig {
@Bean
public Queue Queue3() {
return new Queue("queueName3");//queueName3为队列的名称
}
}
消息发送控制类:
package com.example.cp.controller;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Description: RabbitMq 发送消息控制类
* @Author: chenping
* @Date: 2021-03-02
*/
@RestController
public class RabbitMqSendController {
@Autowired
AmqpTemplate amqpTemplate;
/**
* @Description: 发送到其他的系统,其他的系统除了有接收消息的监听,也要有config配置队列的文件、yml 配置
* @param:
* @return: java.lang.String
* @Author: chenping
* @Date: 2021/3/3 10:42
*/
@GetMapping("/rabbitmq/sendToClient")
public String sendToClient() {
String message = "server message sendToClient";
amqpTemplate.convertAndSend("queueName3",message);
return message;
}
}
客户端:
rabbitmq配置:同服务端
队列消息监听类:接收 queueName3 发送的消息
package com.example.demo.controller;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
/**
* @Description: RabbitMq 接收队列 queueName3 消息
* @Author: chenping
* @Date: 2021-03-02
*/
@Component
@RabbitListener(queues = "queueName3")//发送的队列名称
public class RabbitMqReceiver2Handler {
@RabbitHandler
public void receiveMessage(String message) {
System.out.println("接收者2--接收到queueName3队列的消息为:"+message);
}
}
验证测试消息发送
服务端调用接口发送消息:
客户端接收消息:
更多推荐
已为社区贡献3条内容
所有评论(0)