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控制台

猜你喜欢

转载自www.cnblogs.com/xueershewang/p/9122116.html