RabbitMQ springboot 简单模式-消费者工程

上接:RabbitMQ springboot创建父工程

创建消费者子模块

在父项目中,创建消费者子模块:consumer

略

pom.xml

由于父项目已引入所有依赖包,所以pom.xml中不做任何修改

application.yml

在 resources 目录下创建 application.yml 文件,内容如下:

server:
  port: 8002


spring:
  application:
    #服务名称
    name: rabbitmq-consumer-a
  #RabbitMQ的配置
  rabbitmq:
    host: 127.0.0.1
    port: 5672
    username: guest
    password: guest

创建 RabbitMQ 监听器

启动服务后,自动从消息队列中取出消息

package org.malaoshi.rabbitmq;

import com.rabbitmq.client.Channel;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.Queue;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

@Component
public class ConsumerListener {
    public static final String NOTICE="notice";
    //注册监听器,并指定消息队列名称
//    @RabbitListener(queues = NOTICE) //需要实现创建队列,否则报错
    @RabbitListener(queuesToDeclare = @Queue(NOTICE))//自动创建队列
    public void receiveMsg(String msg, Channel channel, Message message){
        //msg:字符串消息
        System.out.println("收到消息:" + msg);
        System.out.println("channel通道编号为:" + channel.getChannelNumber());
        //可以通过Message对象,获取消息正文
        System.out.println("收到消息:" + new String(message.getBody()));
    }
}

事先创建队列

使用下面注解,需要事先创建好队列,否则报错:

@RabbitListener(queues = NOTICE)

自动创建队列

使用下面注解,会自动创建队列:

@RabbitListener(queuesToDeclare = @Queue(NOTICE))

主启动类

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Main {
    public static void main(String[] args) {
        SpringApplication.run(Main.class, args);
    }
}

启动服务

启动主启动类

控制台会打印接收到的消息:

收到消息:abc
channel通道编号为:1
收到消息:abc

访问 rabbitmq web管理页面

此时创建 消息队列 notice 了


原文出处:/show_1IX1ic9YeV09.html