我正在寻找一种方法来列出所有声明的交换,使用Java代码在rabbitmq中排队。 我知道那个命令" rabbitmqctl list_queues"我也知道" rabbitmqadmin列表队列"
答案 0 :(得分:6)
您可以使用HTTP API。
安装网络管理插件:
rabbitmq-plugins enable rabbitmq_management
然后使用API获取信息:
http://localhost:15672/api/exchanges
http://localhost:15672/api/queues
完整的API列表可在以下网址获得:
http://localhost:15672/api/
只需执行java http请求并获取json结果。
答案 1 :(得分:1)
我编写了一个函数来将交换或队列列表转换为JComboBox
。没有使用JSON
解析器,只使用了split
函数...祝你好运
private void getValuesFromRabbitWebAPI(String strURL, JComboBox<String> c) throws MalformedURLException, IOException
{
String loginPassword = username()+ ":" + password();
String encoded = DatatypeConverter.printBase64Binary(loginPassword.getBytes());
URL url = new URL(strURL);
URLConnection conn = url.openConnection();
conn.setRequestProperty ("Authorization", "Basic " + encoded);
String response = "";
try (BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()))) {
String line;
while ((line = in.readLine()) != null){
response += line;
}
}
String[] split = response.split("\"name\":\"");
c.addItem((String)"");
// skipping the first element "[{" or ""
for(int i=1; i<split.length; i++)
{
String nameRaw = split[i];
int index = nameRaw.indexOf("\"");
if (index > 0 && !nameRaw.startsWith("amq."))
{
String name = nameRaw.substring(0, index);
c.addItem((String) name);
}
}
}
答案 2 :(得分:0)
获取交换的函数的参数:
getValuesFromRabbitWebAPI("http://" + hostname + ":15672/api/exchanges", exchangeComboBox);
或获取队列:
getValuesFromRabbitWebAPI("http://" + hostname + ":15672/api/queues", queueComboBox);