java 动态队列_RabbitMq之动态修改队列参数
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之动态修改队列参数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 免费python基础笔记_python基
- 下一篇: 场地测量的方法和程序_场地测量方案