Springboot使用rabbitmq

配置文件

1.打开Rabbitmq的配置类,发现默认配置为本地,所以若你是没有改变,不用配置文件中配置
在这里插入图片描述
在这里插入图片描述

配置开启rabbitmq

在这里插入图片描述

创建队列

1.可以选择配置页面**http://localhost:15672/#/**配置交换器,路由规则,消息队列
2.我这里代码配置了
测试类中

 @Autowired
    AmqpAdmin amqpAdmin;

    @Test
    public void bind() {
        amqpAdmin.declareExchange(new DirectExchange("direct.exchange2"));
        amqpAdmin.declareQueue(new Queue("direct.queue2",true));		//持久化数据到erlang数据库,服务器宕机重启还在
        amqpAdmin.declareBinding(new Binding("direct.queue2", org.springframework.amqp.core.Binding.DestinationType.QUEUE,"direct.exchange2","direct.key2",null));
    }

然后单独运行一次,让rabbitmq先创建这些东西
这段代码意思:声明一个交换器命名direct.exchange2 , 队列direct.queue2,路由规则为direct.key2

创建配置类,消息以JSON形式保存规则

在这里插入图片描述

创建监听器,监听队列

在这里插入图片描述

向队列发送消息

 @Autowired
    RabbitTemplate rabbitTemplate;

    @Autowired
    AmqpAdmin amqpAdmin;

   @Test
    public void bind() {
        amqpAdmin.declareExchange(new DirectExchange("direct.exchange2"));
        amqpAdmin.declareQueue(new Queue("direct.queue2",true));
        amqpAdmin.declareBinding(new Binding("direct.queue2", org.springframework.amqp.core.Binding.DestinationType.QUEUE,"direct.exchange2","direct.key2",null));
    }

    @Test
    public void send() {						//**运行这个测试类**
        for (int i = 0; i < 5; i++) {
            rabbitTemplate.convertAndSend("direct.exchange2","direct.key2",new Person().setName("gqs"+ i));
        }
       }

控制台打出
在这里插入图片描述
ps:

管理界面获取消息

windows配置管理界面

在这里插入图片描述

docker 配置管理界面

docker ps -a
docker exec -it RabbitMQ镜像ID/容器名字 bash
rabbitmq-plugins enable rabbitmq_management

在这里插入图片描述
2.一个消息队列可以放多个类型,但是监听器只能取指定类型,其他类型会报错,但是可以通过Object来取,就可以了
3.rabbitmq发送消息队列测试时,每次监听控制台都会少几条发送数据,原来是发送信息时也加载了spring环境,里面监听器会运行一下,消费了几条消息,解决办法:在测试类发送消息时,把开启rabbitmq注解或者服务一下就可以了

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页