Spring Boot 整合 RabbitMQ(二)

本文详细介绍了如何使用Spring Boot框架与RabbitMQ消息中间件进行集成,包括Maven依赖配置、YAML配置文件设置、Spring配置类定义、创建生产者与消费者工程,以及通过测试类发送和接收消息的过程。

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

  • 新建生产者工程

maven 依赖,方便测试引入测试包

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

配置文件yml

spring:
  rabbitmq:
      host: localhost
      port: 5672
      virtual-host: itea
      username: dxayga
      password: dxayga

Spring 配置类以 topic模式为例:

@Configuration
public class RabbitMQConfig {

    //交换机名称
    public final static String ITEM_TOPIC_EXCHANGE = "item_topic_exchange";
    //队列名称
    public final static String ITEM_QUEUE = "item_queue";

    /**
     * 声明交换机
     * 注意ExchangeBuilder有三个方法
     * @return
     */
    @Bean
    public Exchange exchange(){
        return ExchangeBuilder.topicExchange(ITEM_TOPIC_EXCHANGE).durable(true).autoDelete().build();
    }

    /**
     * 声明队列
     * @return
     */
    @Bean
    public Queue queue(){
        return QueueBuilder.durable(ITEM_QUEUE).build();
    }

    /**
     * 绑定到交换机
     * @return
     */
    @Bean
    public Binding binding(){
        return BindingBuilder.bind(queue()).to(exchange()).with("item.#").noargs();
    }

}

写一个测试类发送消息

@RunWith(SpringRunner.class)
@SpringBootTest(classes = ProviderApplication.class)
public class RabbitMQTest {

    @Autowired
    private RabbitTemplate rabbitTemplate;

    @Test
    public void test(){
        System.out.println(rabbitTemplate);
        rabbitTemplate.convertAndSend(RabbitMQConfig.ITEM_TOPIC_EXCHANGE,
                "item.insert","这是一个测试消息,Routing is item.insert") ;
        rabbitTemplate.convertAndSend(RabbitMQConfig.ITEM_TOPIC_EXCHANGE,
                "item.update","这是一个测试消息,Routing is item.update");
        rabbitTemplate.convertAndSend(RabbitMQConfig.ITEM_TOPIC_EXCHANGE,
                "item.delete","这是一个测试消息,Routing is item.delete");
        System.out.println("消息发送");
    }

}
  • 新建消费者工程(pom和yml和生产者工程相同)

在消费者工程只要写一个监听类

@Component
public class RabbitMQListener {

    @RabbitListener(queues = "item_queue")
    public void listener(String message){
        System.out.println("接收到的消息:"+message);
    }

}

测试结果:

2020-08-16 17:46:16.979  INFO 10112 --- [trap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver      : Resolving eureka endpoints via configuration
2020-08-16 17:51:16.981  INFO 10112 --- [trap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver      : Resolving eureka endpoints via configuration
接收到的消息:这是一个测试消息,Routing is item.insert
接收到的消息:这是一个测试消息,Routing is item.update
接收到的消息:这是一个测试消息,Routing is item.delete

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值