rabbitmq整合springboot

本文介绍了如何在Spring Boot应用中整合RabbitMQ,包括添加相关依赖、配置RabbitMQ连接信息,以及创建交换机、队列和绑定。通过配置保证消息确认和备份策略,确保消息的可靠传输。此外,还展示了生产者发送消息和消费者接收消息的代码实现。
摘要由CSDN通过智能技术生成

1、导入依赖

<!--RabbitMQ 测试依赖 -->
<dependency>
    <groupId>org.springframework.amqp</groupId>
    <artifactId>spring-rabbit-test</artifactId>
    <scope>test</scope>
</dependency>

<!--RabbitMQ 依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

2、配置信息

①application.properties

spring.rabbitmq.host=10.15.70.40
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
spring.rabbitmq.publisher-confirm-type=correlated
spring.rabbitmq.publisher-returns=true
还有没列举

②application.yml

spring:
  rabbitmq:
    port: 5672
    host: 10.15.70.40
    username: guest
    password: guest
      #这个配置是保证提供者确保消息推送到交换机中,不管成不成功,都会回调
      publisher-confirm-type: correlated
      #保证交换机能把消息推送到队列中
      publisher-returns: true
      virtual-host: /
      #这个配置是保证消费者会消费消息,手动确认
      listener:
        simple:
          acknowledge-mode: manual
      template:
        mandatory: true

3、编写配置类(即图中的1部分)

①把队列名、交换机名字和路由key名字写好

②创建交换机

③创建队列

④把队列和交换机通过路由key进行绑定。

@Configuration
public class ConfirmConfig {
    //交换机
    public static final String CONFIRM_EXCHANGE_NAME = "confirm_exchange";
    //队列
    public static final String CONFIRM_QUEQUE_NAME = "confirm_queue";
    //路由Key
    public static final String CONFIRM_ROUTING_KEY = "key1";
    //备份交换机
    public static final String BACKUP_EXCHANGE_NAME= "back_exchange";
    //备份队列
    public static final String BACKUP_QUEQUE_NAME = "confirm_queue";
    //报警队列
    public static final String WARNING_QUEEUE_NAME= "warning_queue";


    //声明交换机
    @Bean("confirmExchange")
    public DirectExchange confirmExchange(){
        return ExchangeBuilder.directExchange(CONFIRM_EXCHANGE_NAME).durable(true).withArgument("alternate-exchange",BACKUP_EXCHANGE_NAME).build();
    }

    @Bean("confirmQueue")
    public Queue confirmQueue(){
        return QueueBuilder.durable(CONFIRM_QUEQUE_NAME).build();
    }

    @Bean
    public Binding queueBindingExchange(@Qualifier("confirmQueue") Queue confirmQueue,@Qualifier("confirmExchange") DirectExchange confirmExchange){
        return BindingBuilder.bind(confirmQueue).to(confirmExchange).with(CONFIRM_ROUTING_KEY);
    }

    @Bean("backupExchange")
    public FanoutExchange backupExchange(){
        return new FanoutExchange(BACKUP_EXCHANGE_NAME);
    }

    @Bean("backupQueue")
    public Queue backupQueue(){
        return QueueBuilder.durable(BACKUP_QUEQUE_NAME).build();
    }

    @Bean("warningQueue")
    public Queue warningQueue(){
        return QueueBuilder.durable(WARNING_QUEEUE_NAME).build();
    }

    @Bean
    public Binding backupQueueBindingbackupExchange(@Qualifier("backupQueue") Queue backupQueue,@Qualifier("backupExchange") FanoutExchange backupExchange){
        return BindingBuilder.bind(backupQueue).to(backupExchange);
    }

    @Bean
    public Binding warningQueueBindingbackupExchange(@Qualifier("warningQueue") Queue warningQueue,@Qualifier("backupExchange") FanoutExchange backupExchange){
        return BindingBuilder.bind(warningQueue).to(backupExchange);
    }


}

4、编写生产者(图中2部分)

@Slf4j
@RestController
@RequestMapping("/confirm")
public class ProducerController {
    @Autowired
    private RabbitTemplate rabbitTemplate;

    //开始发消息 测试确认
    @GetMapping("/sendMessage/{message}")
    public void sendMessage(@PathVariable String message){
        CorrelationData correlationData = new CorrelationData("1");
        rabbitTemplate.convertAndSend(ConfirmConfig.CONFIRM_EXCHANGE_NAME,
        ConfirmConfig.CONFIRM_ROUTING_KEY,message,correlationData);
        log.info("发送消息内容:{}",message);
    }
}

5、消费者(即图中3部分)

@Slf4j
@Component
public class Consumer {
    //接收消息

    @RabbitListener(queues = ConfirmConfig.CONFIRM_QUEQUE_NAME)
    public void receiveConfirmMessage(Message message){
        String msg = new String(message.getBody());
        log.info("接收到的队列confirm.queue消息:{}",msg);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值