RabbitMq不支持修改已经存在的队列和交换机参数,可以通过创建失败,捕获异常信息,然后删除原队列或交换机,然后重新创建,以达到修改参数的功能。

package com.sky.study.delete;

import java.io.IOException;

import java.util.concurrent.TimeoutException;

import com.rabbitmq.client.AMQP;

import com.rabbitmq.client.AMQP.Queue.DeclareOk;

import com.rabbitmq.client.Channel;

import com.rabbitmq.client.Connection;

import com.sky.study.ConnectionUtil;

public class DynamicDelete {

private final static String queueName="ceshi_queue";

public static void main(String[] args) throws Exception {

Connection connection = ConnectionUtil.getConnection();

Channel channel = connection.createChannel();

DeclareOk ss = declearQueue(channel,queueName);

System.out.println(ss);

channel.close();

connection.close();

}

public static DeclareOk declearQueue(Channel channel, String queueName) throws Exception {

Connection connection1 = ConnectionUtil.getConnection();

Channel channel1 = connection1.createChannel();

try {

channel1.queueDeclare(queueName,true, false, false, null);

} catch (IOException e) {

try {

channel1.close();

} catch (Exception ex) {

}

try {

connection1.close();

} catch (Exception ex) {

}

connection1 = ConnectionUtil.getConnection();

channel1 = connection1.createChannel();

channel1.queueDelete(queueName);

try {

channel1.close();

} catch (Exception ex) {

}

try {

connection1.close();

} catch (Exception ex) {

}

} finally {

try {

channel1.close();

} catch (Exception ex) {

}

try {

connection1.close();

} catch (Exception ex) {

}

}

DeclareOk declareOk = channel.queueDeclare(queueName, true, false, false, null);

return declareOk;

}

public static AMQP.Exchange.DeclareOk declearExchange(Channel channel, String exchangeName, String exchangeMode) throws IOException, TimeoutException {

//exchangeDeclare 交换机名字,类型,是否持久化,不使用时是否自动删除,是否是内部的(不能被客户端使用),其他参数

Connection connection1 = ConnectionUtil.getConnection();

Channel channel1 = connection1.createChannel();

AMQP.Exchange.DeclareOk declareOk;

try {

channel1.exchangeDeclare(exchangeName, exchangeMode, true, false, false, null);

} catch (IOException e) {

try {

channel1.close();

} catch (Exception ex) {

}

try {

connection1.close();

} catch (Exception ex) {

}

connection1 = ConnectionUtil.getConnection();

channel1 = connection1.createChannel();

channel1.exchangeDelete(exchangeName);

try {

channel1.close();

} catch (Exception ex) {

}

try {

connection1.close();

} catch (Exception ex) {

}

} finally {

try {

channel1.close();

} catch (Exception ex) {

}

try {

connection1.close();

} catch (Exception ex) {

}

}

declareOk = channel.exchangeDeclare(exchangeName, exchangeMode,true, false, false, null);

return declareOk;

}

}

java 动态队列_RabbitMq之动态修改队列参数相关推荐

  1. java rabbitmq 绑定_RabbitMQ:交换,队列和绑定 - 谁设置了什么?

    当使用RabbitMQ发送消息时,您基本上有交换,队列和绑定 . 我理解他们的想法以及他们如何相互联系,但我不确定是谁设置了什么 . 基本上,我的应用程序中有三个场景 . 场景1:一个发布者,多个工作 ...

  2. java死信队列_RabbitMQ 死信队列是什么鬼?

    死信队列 死信队列:没有被及时消费的消息存放的队列. 消息没有被及时消费的原因: a.消息被拒绝(basic.reject/ basic.nack)并且不再重新投递 requeue=false b.T ...

  3. java 动态线程池_线程池的参数动态调整

    经典面试题 这次的文章还是绕回了我写的第三篇原创文章<有的线程它死了,于是它变成一道面试题>中留下的几个问题: 哎,兜兜转转,走走停停.天道好轮回,苍天饶过谁? 在这篇文章中我主要回答上面 ...

  4. 牛客刷题-Java面试题库【动态更新添加题目】(2023.06.19更新)

    讲在前面 ✨ 牛客刷题日记–理解为重中之重 刷题一方面是持续的了解到自己哪方面比较欠缺,另一方面也是从各大厂的面试题可以看出当前所需的技术栈的偏重点,持续的巩固基础和查漏补缺,一如代码深似海–学无止境 ...

  5. mybatis select语句会默认带排序吗_10月阿里最新38道Java面试题解析(MyBatis+消息队列+Redis)...

    MyBatis面试题 一.谈谈你对 MyBatis 的理解? 1. Mybatis是一个半ORM(对象关系映射)框架,它内部封装了 JDBC,开发时只需要关注 SQL 语句本身,不需要花费精力去处理加 ...

  6. Java代理模式/静态代理/动态代理

    代理模式:即Proxy Pattern,常用的设计模式之一.代理模式的主要作用是为其他对象提供一种代理以控制对这个对象的访问. 代理概念 :为某个对象提供一个代理,以控制对这个对象的访问. 代理类和委 ...

  7. Java Review - 并发编程_抽象同步队列AQS

    文章目录 概述 AQS--锁的底层支持 state 的作用 ConditionObject 独占 VS 共享 独占方式下,获取与释放资源的流程 共享方式下,获取与释放资源的流程 Interruptib ...

  8. Java动态代理的两种实现方法:JDK动态代理和CGLIB动态代理

    Java动态代理的两种实现方法:JDK动态代理和CGLIB动态代理 代理模式 JDK动态代理 CGLIB动态代理 代理模式 代理模式是23种设计模式的一种,指一个对象A通过持有另一个对象B,可以具有B ...

  9. 不可上位!数据结构队列,老实排队,Java实现数组模拟队列及可复用环形队列

    文章目录 队列简介 数组模拟队列(无法复用) 数组模拟环形队列(可复用) 队列简介 队列是一个有序列表,可以用数组或是链表来实现. 遵循先入先出的原则.即先存入队列的数据,先取出,后存入的后取出. 示 ...

最新文章

  1. [转]Android有效解决加载大图片时内存溢出的问题
  2. StringIO和BytesIO
  3. FPGA笔录(2)-触发器与锁存器原理
  4. sharepoint 2010 彻底删除用户
  5. java 更新订单状态_Java 8状态更新
  6. 为什么计算神经科学和AI会融合
  7. android java加密_Android Java字符串加密
  8. 在ubuntu上安装Avant Window Navigator (AWN)
  9. 如何开发油猴脚本来block掘金用户
  10. 英语六级翻译训练:教育专题
  11. HRESULT:0x80029C4A错误
  12. 遗传算法和神经网络算法区别与联系
  13. python-函数参数和文档
  14. 给你个使用NAS私有云服务器的理由
  15. 【LEACH协议】基于matlab实现无线传感器网络LEACH与DEEC协议
  16. 城市交通出行效率对比分析与思考
  17. metasploit小白教程总结
  18. JavaScript:隐藏、显示div
  19. Cocos creator Graphics绘制线条却出现的是填充图案
  20. c++里面的protect和public、private有什么区别?

热门文章

  1. C++离航篇——函数默认参数、函数重载、内敛函数
  2. 解构领域驱动设计(三):领域驱动设计
  3. pointcut 切面表达式 切入点表达式
  4. Node.js mimimn图片批量下载爬虫 1.00
  5. 为什么分布式一定要有redis,redis的一些优缺点
  6. C语言指针:从底层原理到花式技巧,用图文和代码帮你讲解透彻
  7. linux下的I2C驱动记录(RK)
  8. 16进制数组转字符串
  9. Pandas使用小技巧
  10. imx6 配置串口波特率_RS232串口多机通信