栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot整合RabbitMQ,不用消费者和生产者直接便捷式创建交换机和队列

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot整合RabbitMQ,不用消费者和生产者直接便捷式创建交换机和队列

SpringBoot整合RabbitMQ,不用消费者和生产者便捷式直接创建交换机和队列

  • 引入rabbitMQ依赖

		
			org.springframework.boot
			spring-boot-starter-amqp
		
  • 配置文件
#rabbitmq主机地址
spring.rabbitmq.host=192.168.216.134
spring.rabbitmq.port=5672
spring.rabbitmq.username=admin
spring.rabbitmq.password=123
  • 交换机与队列关系图

  • 代码如下

package com.cg.rabbitmq.config;

import org.springframework.amqp.core.*;
import org.springframework.amqp.rabbit.core.RabbitAdmin;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.HashMap;
import java.util.Map;

@Configuration
public class TtlQueueConfig {
    @Autowired
    private RabbitTemplate rabbitTemplate;


    public static final String X_EXCHANGE = "X";
    public static final String QUEEN_A = "QA";
    public static final String QUEEN_B = "QB";
    public static final String Y_EXCHANGE = "Y";
    public static final String QUEEN_D = "QD";

    @Bean
    public DirectExchange x_exchange() {
       return new DirectExchange(X_EXCHANGE);
    }
    @Bean
    public DirectExchange y_exchange() {
        return new DirectExchange(Y_EXCHANGE);
    }
    //声明队列 A ttl 为 10s 并绑定到对应的死信交换机
    @Bean
    public Queue qa() {
        Map args = new HashMap<>(3);
        //声明当前队列绑定的死信交换机
        args.put("x-dead-letter-exchange", Y_EXCHANGE);
        //声明当前队列的死信路由 key
        args.put("x-dead-letter-routing-key", "YD");
        //声明队列的 TTL
        args.put("x-message-ttl", 10000);
        return QueueBuilder.durable(QUEEN_A).withArguments(args).build();
    }
    //声明队列 B ttl 为 40s 并绑定到对应的死信交换机
    @Bean
    public Queue qb() {
        Map args = new HashMap<>(3);
//声明当前队列绑定的死信交换机
        args.put("x-dead-letter-exchange", Y_EXCHANGE);
//声明当前队列的死信路由 key
        args.put("x-dead-letter-routing-key", "YD");
//声明队列的 TTL
        args.put("x-message-ttl", 40000);
      return  QueueBuilder.durable(QUEEN_B).withArguments(args).build();
    }
    @Bean
    public Queue qd() {
        return  new Queue(QUEEN_D);
    }

//    QA队列与X交换机绑定
    @Bean
    public Binding qaBindXchange() {
        return BindingBuilder.bind(qa()).to(x_exchange()).with("XA");
    }
    //    QB队列与X交换机绑定
    @Bean
    public Binding qbBindXchange() {
        return BindingBuilder.bind(qb()).to(x_exchange()).with("XB");
    }
    //    QD队列与Y交换机绑定
    @Bean
    public Binding qdBindYchange() {
        return BindingBuilder.bind(qd()).to(y_exchange()).with("YD");
    }

    @Bean
    public RabbitAdmin creaatRabbitAdmin(RabbitTemplate rabbitTemplate) {
        
        RabbitAdmin rabbitAdmin = new RabbitAdmin(rabbitTemplate);
        rabbitAdmin.declareExchange(x_exchange());
        rabbitAdmin.declareExchange(y_exchange());
        rabbitAdmin.declareQueue(qa());
        rabbitAdmin.declareQueue(qb());
        rabbitAdmin.declareQueue(qd());
        rabbitAdmin.declareBinding(qaBindXchange());
        rabbitAdmin.declareBinding(qbBindXchange());
        rabbitAdmin.declareBinding(qdBindYchange());
        return rabbitAdmin;
    }


}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/861045.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号