springboot整合rabbitMQ

本文详细介绍了如何在SpringBoot项目中整合RabbitMQ,包括安装配置、依赖添加、配置连接信息、创建配置类、实现消息生产者与消费者的过程。解决了在整合过程中可能遇到的常见问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

springboot整合rabbitMQ

安装
  • 首先安装相关配置
$ sudo apt install erlang
$ sudo apt install rabbitmq-server
  • 启动、停止、重启、状态rabbitMq命令
sudo rabbitmq-server start
sudo rabbitmq-server stop
sudo rabbitmq-server restart
sudo rabbitmqctl status
  • 添加用户,并赋予administrator权限
sudo rabbitmqctl add_user  wangbeibei  123456
sudo rabbitmqctl set_user_tags wangbeibei administrator
  • 然后在浏览器输入http://localhost:15672 登录后查看服务器情况
    默认用户名密码是guest/guest
整合

然后是整合

  • 首先添加依赖
<!--rabbitmq-->
     <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-amqp</artifactId>
     </dependency>
  • 配置连接信息
spring:
  # redis:
  #   host: 127.0.0.1
  #   port: 6379
  #   password: 367494
  #   jedis:
  #     pool:
  #       max-active: 8
  #       max-wait: -1
  #       max-idle: 500
  #       min-idle: 0
  #   lettuce:
  #     shutdown-timeout: 0
  rabbitmq:
    host: 127.0.0.1
    port: 5672
    username: guest
    password: guest
    listener:
      direct:
        retry:
          enabled: true
          max-attempts: 5
  • 添加配置类
    后面遇到一堆bug为找到解决办法…
    待研究
    目前问题已解决,是导入的包的问题
    配置类config包目录下新建RabbitConfig类
package com.wbb.demo.config;

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


@Configuration
public class RabbitConfig {

    /**
     * 创建队列
     * @return
     */
    @Bean
    public Queue createQueue1(){
        return new Queue(RabbitConfig.queue1);
    }
    @Bean
    public Queue createQueue2(){
        return new Queue(RabbitConfig.queue2);
    }
    //交换器
    public static final String exchange1="exchange1";

    //队列
    public static final String queue1="queue1";
    public static final String queue2="queue2";

    //路由键
    public static final String routingKey1="routingKey1";
    public static final String routingKey2="routingKey2";

    /**
     * 交换机类型
     */
    @Bean
    public DirectExchange defaultExchange(){
        return new DirectExchange(exchange1);
    }

    /**
     * 一个交换机可以绑定多个消息队列
     */
    @Bean
    public Binding binding(){
        return BindingBuilder.bind(createQueue1()).to(defaultExchange()).with(RabbitConfig.routingKey1);

    }
    @Bean
    public Binding bindingB(){
        return BindingBuilder.bind(createQueue2()).to(defaultExchange()).with(RabbitConfig.routingKey2);

    }
}
  • 消息生产者与接受者
    新建rabbitmq包
    包下新建Sender类与Receiver类
    Sender类:
package com.wbb.demo.rabbitmq;

import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.wbb.demo.config.RabbitConfig;

@Component
@Slf4j
public class Sender {
    @Autowired
    private RabbitTemplate rabbitTemplate;

    public void sendMsg(String content){
        rabbitTemplate.convertAndSend(RabbitConfig.exchange1,RabbitConfig.routingKey1, content);
    }
}

这里rabbitTemplate在注入的时候出现了错误
找了半天找到一个解决方案
参考链接:https://baijiahao.baidu.com/s?id=1641259463977037153&wfr=spider&for=pc

主要就是在配置类中加上rabbitTemplate的声明这里加上@Bean后又出现了新的错误connectionFactory无法注入
错误:
在这里插入图片描述
目前还未找到解决办法
先把代码放上去了

/**
 * 声明rabbitTemplate
 * @param connectionFactory
 * @return
 */
@Bean
public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory){
    RabbitTemplate rabbitTemplate=new RabbitTemplate((connectionFactory));
    return rabbitTemplate;
}

Receiver类:

package com.wbb.demo.rabbitmq;

import com.wbb.demo.config.RabbitConfig;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

@Component
@Slf4j
public class Receiver {

    /**
     * 接收消息的方法,采用消息队列监听机制
     * @param msg
     */
    @RabbitListener(queues = RabbitConfig.queue1)
    public void process(String msg) throws InterruptedException{
        log.info("队列1接收到消息"+msg);
    }
}
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值