springBoot整合RabbitMq简单使用

springBoot整合RabbitMq相关使用

相关springboot和rabbitMq需要导入的依赖

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

yml配置文件所需要的配置

spring:
  rabbitmq:
    host: ####
    port: ####
    username: ####
    password: ####

之前是在消费者中来声明队列,交换机和绑定关系,现在创建一个配置类来完成这些操作

@Configuration
public class QueueConfig {

    /**
     * 普通交换机名称
     */
    public static final String X_EXCHANGE="X";
    /**
     * 队列A
     */
    public static final String QUEUE_A="QA";
    /**
     * 队列B
     */
    public static final String QUEUE_B="QB";

    /**
     * 声明X交换机
     * xExechange
     * @return
     */
    @Bean("xExechange")
    public DirectExchange xExechange(){
        return new DirectExchange(X_EXCHANGE);
    }

    /**
     * 声明Y交换机
     * yExechange
     * @return
     */
    @Bean("yExechange")
    public DirectExchange yExechange(){
        return new DirectExchange(Y_DEAD_LETTER_EXCHANGE);
    }

    /**
     * 声明queueA
     * @return
     */
    @Bean("queueA")
    public Queue queueA(){
        return QueueBuilder.durable(QUEUE_A).build();
    }

    /**
     *  声明queueB
     * @return
     */
    @Bean("queueB")
    public Queue queueB(){
        return QueueBuilder.durable(QUEUE_B).build();
    }

    /**
     * 声明绑定关系 queueABindingX
     * @param queueA
     * @param xExechange
     * @return
     */
    @Bean
    public Binding queueABindingX(@Qualifier("queueA") Queue queueA,
                                  @Qualifier("xExechange")DirectExchange xExechange){
        return BindingBuilder.bind(queueA).to(xExechange).with("XA");
    }

    /**
     * 声明绑定关系 queueBBindingX
     * @param queueB
     * @param xExechange
     * @return
     */
    @Bean
    public Binding queueBBindingX(@Qualifier("queueB") Queue queueB,
                                  @Qualifier("xExechange")DirectExchange xExechange){
        return BindingBuilder.bind(queueB).to(xExechange).with("XB");
    }

发送消息使用springboot提供的rabbitTemplate

@RestController
@RequestMapping("/send/message/")
public class SendMessageController {

    @Autowired
    private RabbitTemplate rabbitTemplate;

    @GetMapping("{msg}")
    public String sendMessage(@PathVariable("msg") final String msg){
        // 发送消息到指定队列中
        rabbitTemplate.convertAndSend(QueueConfig.X_EXCHANGE,"XC",msg);
        return msg;
    }
}

消费消息使用@RabbitListener注解

@Slf4j
@Component
public class DeadLetterQueueCustomer {
	/**
     * 消费消息
     * @param message
     * @param channel
     */
    @RabbitListener(queues = QueueConfig.DEAD_LETTER_QUEUE)
    public void received(Message message, Channel channel){
    	// 获取到相关的消息
        String msg = new String(message.getBody());
        System.out.println("msg = " + msg);
    }
}

启动项目

浏览器输入以下url

在这里插入图片描述

控制台会相应打印出

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

麦片王子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值