• Spring-boot 集成 ribbitMQ


    mq上有好多个消息,如果两个系统共同使用一个mq,怎么区分mq里的消息是这两个系统中哪一个的呢,mq提供了一种方法---消息列队

    首先在mq上创建一个消息列队,名字是唯一的,然后系统根据消息列队的名字----向消息列队中存数据和取数据

    springboot集成ribbitMQ一般要做的事情----链接mq---创建一个标识(创建消息列队)----像消息列队中添加值-------从消息列队中取值

    springboot集成rabbitmq要做的事情

    1:引入jar

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>

    2:在application.properties配置    ip、端口、用户名和密码

    spring.application.name=spirng-boot-rabbitmq
    spring.rabbitmq.host=192.168.146.134
    spring.rabbitmq.port=5672
    spring.rabbitmq.username=admin
    spring.rabbitmq.password=123

    3:创建一个RabbitConfig类    ,目的spring初始化时候在mq上创建一个消息列队

    package com.blueskystarts.module.mq;
    import org.springframework.amqp.core.Queue;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    @Configuration
    public class RabbitConfig {
        @Bean
        public Queue Queue() {
            return new Queue("helloMQ");//会在mq上创建一个名为helloMQ的消息列队
        }
    }

    4:创建一个消息接收类----只要mq对应的消息列队中有消息就获取消息

    package com.blueskystarts.module.mq;
    import org.apache.log4j.Logger;
    import org.springframework.amqp.rabbit.annotation.RabbitHandler;
    import org.springframework.amqp.rabbit.annotation.RabbitListener;
    import org.springframework.stereotype.Component;

    @Component
    @RabbitListener(queues = "helloMQ")
    public class HelloReceiver {
        @RabbitHandler
        public void process(String message) {
            System.out.println("从helloMQ获取的消息message: ==========================="+message);
        }
    }

    上面使用的是springboot自带的获取mq的工具,只要加上对应的注解,就能获取到想要的消息列队的消息

    5:写个接口发个消息测试下----springboot有个rabbitTemplate类,这个类里有方法可以向mq的消息列队中添加消息

    package com.blueskystarts.module.mq.controller;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    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.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;

    @RestController
    @RequestMapping("/testmq")
    public class SendMQController {
        
        @Autowired
        private AmqpTemplate rabbitTemplate;
        
        //http://127.0.0.1:8080/testmq/sendmessage
        @GetMapping(value = "/sendmessage")
        public String sendMessage(){
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            String test = "当前时间:"+dateFormat.format(new Date());      
            rabbitTemplate.convertAndSend("helloMQ", test);
            return "消息已经发送到helloMQ消息列队中";
        }
    }

    6:在页面上执行接口:http://127.0.0.1:8080/testmq/sendmessage

    查看eclipce控制台

  • 相关阅读:
    压缩感知理论模型
    欢迎使用CSDN-markdown编辑器
    CEF3 概览及一般使用方法
    如何利用CEF3创建一个简单的应用程序 (Windows Platform)
    递归(浅解)
    day22 ftp传输作业未完成
    day21(套接字初应用)
    Multiprocess.Process(源码)
    day20 网络编程(初识)
    day19(异常补遗)
  • 原文地址:https://www.cnblogs.com/xueershewang/p/9122116.html
Copyright © 2020-2023  润新知