spring-boot集成rabbitmq

文章介绍了如何在SpringBoot项目中集成RabbitMQ,包括添加POM依赖,配置YML文件,创建虚拟主机,以及配置交换机、队列和绑定。同时,展示了生产者和消费者的代码示例,生产者使用RabbitTemplate发送消息,消费者通过@RabbitListener监听并处理消息。
摘要由CSDN通过智能技术生成

配置

添加pom依赖

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

yml配置

注意:端口15672是客户端访问端口,服务端的访问端口为5672

spring:
  rabbitmq:
    virtual-host: /
    host: ip
    username: 用户名
    password: 密码
    port: 5672

创建virtual-host命令:

rabbitmqctl add_vhost 虚拟服务器名称 

例如:rabbitmqctl add_vhost my_test

如果不想创建可以在管理页面查看对应用户名的virtual host
在这里插入图片描述

配置类

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

@Configuration
public class RabbitmqConfig {
    /**交换机名称*/
    public static final String EXCHANGE_FANOUT_NAME="fanout";
    public static final String EXCHANGE_DIRECT_NAME="direct";
    public static final String EXCHANGE_TOPIC_NAME="topic";

    /**队列名称*/
    public static final String QUEUE_NAME="queue";

    /**
     * 设置交换机
     * FanoutExchange对应类型fanout
     * DirectExchange对应类型direct
     * TopicExchange对应类型topic
     * @return
     */
    @Bean
    public FanoutExchange fanoutExchange(){
        // durable(true) 交换机持久化
        // autoDelete(false) 不自动删除
        return new FanoutExchange(EXCHANGE_FANOUT_NAME,true,false);
    }
    
    /**
     * 设置队列
     * @return
     */
    @Bean
    public Queue queue(){
        // durable(true) 自由队列
        return new Queue(QUEUE_NAME,true);
    }

    /**
     * 交换机和队列绑定
     * @return
     */
    @Bean
    public Binding binding() {
        return BindingBuilder.bind(queue()).to(fanoutExchange());

    }
}

生产者

import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;

@Component
public class Producer {

    @Resource
    RabbitTemplate rabbitTemplate;

    public void test() {
        // 源码中的routingKey参数:路由key/队列名称
      rabbitTemplate.convertAndSend(RabbitmqConfig.EXCHANGE_FANOUT_NAME,RabbitmqConfig.QUEUE_NAME,"hello word");
    }
}

消费者

import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

/**
 * Created by zy on 2023-03-23
 */
@Component
@Slf4j
public class Consumer {
    
    @RabbitListener(queues = "queue") // 监听的队列名称
    @RabbitHandler
    public void test(String msg) {
        log.info("消费者消费消息:"+msg);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值