RabbitMQ入坑系列(二):springboot整合rabbitmq实现简单的HelloWorld

新建一个springboot项目,引入rabbitmq依赖,以及配置rabbitmq,基本就算是整合好了

pom.xml



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.3.1.RELEASE
         
    
    com.fandy
    rabbitmq
    0.0.1-SNAPSHOT
    rabbitmq
    Demo project for Spring Boot


    1.8



    
        org.springframework.boot
        spring-boot-starter-web
    

    
        org.springframework.boot
        spring-boot-starter-test
        test
        
            
                org.junit.vintage
                junit-vintage-engine
            
        
    

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



    
        
            org.springframework.boot
            spring-boot-maven-plugin
        
    



主要就是rabbitmq的那个启动器,因为用于测试,所以无关的依赖和启动器能不用则不用

配置文件application.yml

server:
  port: 7000

spring:
  application:
    name: rabbitmq
  #rabbitmq配置
  rabbitmq:
    host: 192.168.150.128
    username: admin
    password: 1115zhaom

这里我配置了项目的端口号、项目名以及rabbitmq的配置,主机地址是虚拟机centos8的IP地址,端口没有配则表示默认,还有用户名和密码

RabbitConfig

package com.fandy.rabbitmq.config;

import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @Author: Fandy
 * @Date: 2020/7/16 12:00
 */
@Configuration
public class RabbitConfig {
    @Bean
    public Queue queue(){
        return new Queue("hello");
    }
}

新建一个配置类,用以生成一个队列hello实例,并将该实例交给spring容器管理

发送者

package com.fandy.rabbitmq.component;

import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
 * @Author: Fandy
 * @Date: 2020/7/16 13:54
 */
@Component
public class Sender {

    @Autowired
    @SuppressWarnings("all")
    private AmqpTemplate amqpTemplate;

    //一对一
    public void send(){
        String msg = "hello";
        System.out.println("sender:"+msg);
        amqpTemplate.convertAndSend("hello",msg);
    }


}

新建一个发送者类,将该类交由spring容器管理,该类有一个send方法,其中调用AmqpTemplate的convertAndSend方法向队列发送消息

接收者

package com.fandy.rabbitmq.component;

import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

/**
 * @Author: Fandy
 * @Date: 2020/7/16 14:06
 */
@Component
@RabbitListener(queues = "hello")
public class Receiver {

    //消息处理器
    @RabbitHandler
    public void process(String msg){
        System.out.println("Receiver:"+msg);
    }
}

新建一个接受者Receiver类,同样该类交由spring容器管理,并且让该类监听队列hello,如果队列里有消息存在,则消息处理器会消化该消息,即调用@RabbitHandler修饰的方法

测试

@Component
@RabbitListener(queues = "hello")
public class Receiver {

    //消息处理器
    @RabbitHandler
    public void process(String msg){
        System.out.println("Receiver:"+msg);
    }
}

运行之后看控制台
RabbitMQ入坑系列(二):springboot整合rabbitmq实现简单的HelloWorld_第1张图片

你可能感兴趣的:(RabbitMQ)