Springboot项目集成RabbitMq

Springboot项目集成RabbitMq,第1张

Springboot项目集成RabbitMq

消息队列,外文名Message Queue,简称MQ,是指在消息的传输中保存消息的容器或服务。

消息队列,是分布式系统实现高性能、高可用、可伸缩等高级特效的重要组件,适用多种场景,如:消息通讯、异步处理、应用解耦、流量削峰等等。

消息队列主要有两种模式:点对点(Point to Point)模式和发布-订阅(Publisher-Subscriber)模式。

安装

安装 RabbitMQ 之前要安装 Erlang ,可以去Erlang官网下载。接着去RabbitMQ官网下载安装包,之后解压缩即可。

+ 1 安装otp_win64_20.2.exe
       配置环境变量:
	   ERLANG_HOME=C:Program Fileserl9.2
       PATH环境变量中添加变量:
	   %ERLANG_HOME%bin

+ 2 安装rabbitmq-server-3.7.4.exe

+ 3.启动插件界面
	+ cd到启动sbin目录
		    cmd C:Program FilesRabbitMQ Serverrabbitmq_server-3.7.4sbin
	+ 执行命令
		rabbitmq-plugins.bat enable rabbitmq_management

	+ 执行命令(或者在服务中右击鼠标进行重启):
		rabbitmqctl stop
		rabbitmq-server restart 

1.引入依赖:

        
            org.springframework.boot
            spring-boot-starter-amqp
        

2.在yml配置文件里配置RabbitMQ的ip端口号名字密码等

spring
	rabbitmq:
    	host: 192.168.1.201
    	port: 5672
    	virtual-host: /
    	username: guest
    	password: guest

# rabbitmq 的设置
mq:
  test:
	#交换机
    exchange:
      message: exchange.message
	#队列
    queue:
      message: queue.message
	#路由
    routing:
      key: queue.message

3.启动类中参加

//获取yml中的属性对应的值'
    @Autowired
    private Environment environment;

    //创建队列
    @Bean
    public Queue queueOrder() {
        return new Queue(environment.getProperty("mq.test.queue.message"));
    }

    //创建交互机 路由模式的交换机
    @Bean
    public DirectExchange createExchange() {
        return new DirectExchange(environment.getProperty("mq.test.exchange.message"));
    }

    //创建绑定 指定routingkey
    @Bean
    public Binding createBinding() {
        return BindingBuilder.bind(queueOrder()).to(createExchange()).with(environment.getProperty("mq.test.routing.key"));
    }

4.发送消息

@RestController
@RequestMapping("/send")
public class Send {

    @Autowired
    private RabbitTemplate rabbitTemplate;

    @Value("${mq.test.exchange.message}")
    private String exchange;

    @Value("${mq.test.routing.key}")
    private String routing;

    @RequestMapping(value = "/test")
    public Result test() {
        String msg = "消息内容,完美接通!!";
        //参数1 指定交换机的名称 exchange
        //参数2 指定routingkey  routing
        //参数3 指定消息本身  msg
        System.out.println("写进队列消息" + msg);
        rabbitTemplate.convertAndSend(exchange, routing, msg);
        return Result.OK("发送消息,测试成功", null);
    }
}

5.接收消息,消息处理类,监听队列 (在接收方同样要导入mq的依赖和配置文件配置)

@RestController
@RabbitListener(queues = "queue.message")
public class Consumer {

    @RabbitHandler //处理字符类型
    public void handler(String msg) {
        if (!StringUtils.isEmpty(msg)) {
            System.out.println("打印:" + msg);
        } else {
            System.out.println("通信失败");
        }
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5699428.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存