|
|
package com.sunyo.wlpt.message.bus.service.rabbit.utils;
|
|
|
|
|
|
import com.rabbitmq.client.AMQP;
|
|
|
import com.rabbitmq.client.Channel;
|
|
|
import com.rabbitmq.client.Connection;
|
|
|
import com.rabbitmq.client.ConnectionFactory;
|
|
|
import com.sunyo.wlpt.message.bus.service.domain.*;
|
|
|
import com.sunyo.wlpt.message.bus.service.response.ResultJson;
|
|
|
import com.sunyo.wlpt.message.bus.service.service.BusServerService;
|
|
|
import com.sunyo.wlpt.message.bus.service.service.VirtualHostService;
|
|
|
import com.sunyo.wlpt.message.bus.service.utils.EncryptionUtils;
|
...
|
...
|
@@ -106,46 +108,67 @@ public class RabbitUtils { |
|
|
/**
|
|
|
* 添加交换机
|
|
|
*/
|
|
|
public void createExchange(BusServer server, String virtualHostName, BusExchange busExchange)
|
|
|
public ResultJson createExchange(BusServer server, String virtualHostName, BusExchange busExchange)
|
|
|
throws IOException, TimeoutException
|
|
|
{
|
|
|
String exchangeName = busExchange.getExchangeName();
|
|
|
|
|
|
Connection connection = getConnection(server.getServerIp(), server.getServerPort(), virtualHostName, server.getSuperUsername(), server.getSuperPassword());
|
|
|
Channel channel = connection.createChannel();
|
|
|
channel.exchangeDeclare(busExchange.getExchangeName(),
|
|
|
// 添加交换机成功,declareOk.toString是 #method<exchange.declare-ok>()
|
|
|
AMQP.Exchange.DeclareOk declareOk = channel.exchangeDeclare(exchangeName,
|
|
|
busExchange.getExchangeType(),
|
|
|
busExchange.getDurability(),
|
|
|
busExchange.getAutoDelete(),
|
|
|
busExchange.getInternal(),
|
|
|
null);
|
|
|
closeConnectionAndChanel(channel, connection);
|
|
|
|
|
|
return declareOk.toString().contains("declare-ok")
|
|
|
? ResultJson.success("添加MQ交换机,成功")
|
|
|
: new ResultJson<>("500", "MQ服务异常,添加MQ交换机:" + exchangeName + ",失败");
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 删除交换机 channel.exchangeDelete(exchangeName);
|
|
|
*/
|
|
|
public void removeExchange(BusServer server, String virtualHostName, BusExchange busExchange)
|
|
|
public ResultJson removeExchange(BusServer server, String virtualHostName, BusExchange busExchange)
|
|
|
throws IOException, TimeoutException
|
|
|
{
|
|
|
String exchangeName = busExchange.getExchangeName();
|
|
|
|
|
|
Connection connection = getConnection(server.getServerIp(), server.getServerPort(), virtualHostName, server.getSuperUsername(), server.getSuperPassword());
|
|
|
Channel channel = connection.createChannel();
|
|
|
channel.exchangeDelete(busExchange.getExchangeName());
|
|
|
// 删除成功的时候,deleteOk.toString是"#method<exchange.delete-ok>()"
|
|
|
AMQP.Exchange.DeleteOk deleteOk = channel.exchangeDelete(exchangeName);
|
|
|
closeConnectionAndChanel(channel, connection);
|
|
|
|
|
|
return deleteOk.toString().contains("delete-ok")
|
|
|
? ResultJson.success("删除MQ交换机,成功")
|
|
|
: new ResultJson<>("500", "MQ服务异常,删除MQ交换机:" + exchangeName + ",失败");
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 添加队列(默认设置参数为 null)
|
|
|
*/
|
|
|
public void createQueue(BusServer server, String virtualHostName, BusQueue busQueue)
|
|
|
public ResultJson createQueue(BusServer server, String virtualHostName, BusQueue busQueue)
|
|
|
throws IOException, TimeoutException
|
|
|
{
|
|
|
String queueName = busQueue.getQueueName();
|
|
|
|
|
|
Connection connection = getConnection(server.getServerIp(), server.getServerPort(), virtualHostName, server.getSuperUsername(), server.getSuperPassword());
|
|
|
Channel channel = connection.createChannel();
|
|
|
channel.queueDeclare(busQueue.getQueueName(),
|
|
|
// 成功时,deleteOk.toString是"#method<exchange.declare-ok>()"
|
|
|
AMQP.Queue.DeclareOk declareOk = channel.queueDeclare(queueName,
|
|
|
busQueue.getDurability(),
|
|
|
false,
|
|
|
busQueue.getAutoDelete(),
|
|
|
null);
|
|
|
closeConnectionAndChanel(channel, connection);
|
|
|
|
|
|
return declareOk.toString().contains("declare-ok")
|
|
|
? ResultJson.success("添加MQ队列,成功")
|
|
|
: new ResultJson<>("500", "MQ服务异常,添加MQ队列:" + queueName + ",失败");
|
|
|
}
|
|
|
|
|
|
/**
|
...
|
...
|
@@ -155,107 +178,113 @@ public class RabbitUtils { |
|
|
/**
|
|
|
* 删除队列 channel.queueDelete(queueName);
|
|
|
*/
|
|
|
public void removeQueue(BusServer server, String virtualHostName, BusQueue busQueue)
|
|
|
public ResultJson removeQueue(BusServer server, String virtualHostName, BusQueue busQueue)
|
|
|
throws IOException, TimeoutException
|
|
|
{
|
|
|
String queueName = busQueue.getQueueName();
|
|
|
|
|
|
Connection connection = getConnection(server.getServerIp(), server.getServerPort(), virtualHostName, server.getSuperUsername(), server.getSuperPassword());
|
|
|
Channel channel = connection.createChannel();
|
|
|
channel.queueDelete(busQueue.getQueueName());
|
|
|
AMQP.Queue.DeleteOk deleteOk = channel.queueDelete(queueName);
|
|
|
closeConnectionAndChanel(channel, connection);
|
|
|
|
|
|
return deleteOk.toString().contains("delete-ok")
|
|
|
? ResultJson.success("删除MQ队列,成功")
|
|
|
: new ResultJson<>("500", "MQ服务异常,删除MQ队列:" + queueName + ",失败");
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 创建绑定
|
|
|
*/
|
|
|
public void createBinding(BusServer server, String virtualHostName, UserMessageBinding userMessageBinding)
|
|
|
public ResultJson createBinding(BusServer server, String virtualHostName, UserMessageBinding userMessageBinding)
|
|
|
throws IOException, TimeoutException
|
|
|
{
|
|
|
Connection connection = getConnection(server.getServerIp(), server.getServerPort(), virtualHostName, server.getSuperUsername(), server.getSuperPassword());
|
|
|
Channel channel = connection.createChannel();
|
|
|
channel.queueBind(userMessageBinding.getQueueName(),
|
|
|
userMessageBinding.getExchangeName(),
|
|
|
userMessageBinding.getRoutingKeyName());
|
|
|
// #method<queue.bind-ok>()
|
|
|
AMQP.Queue.BindOk bindOk = channel.queueBind(userMessageBinding.getQueueName(), userMessageBinding.getExchangeName(), userMessageBinding.getRoutingKeyName());
|
|
|
closeConnectionAndChanel(channel, connection);
|
|
|
|
|
|
return bindOk.toString().contains("bind-ok")
|
|
|
? ResultJson.success("创建MQ绑定关系,成功")
|
|
|
: new ResultJson<>("500", "MQ服务异常,创建MQ绑定关系" + ",失败");
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 解除绑定 channel.queueUnbind("queueName", "exchangeName","routingKey");
|
|
|
*/
|
|
|
public void removeBinding(BusServer server, String virtualHostName, UserMessageBinding userMessageBinding)
|
|
|
throws IOException, TimeoutException
|
|
|
public ResultJson removeBinding(BusServer server, String virtualHostName, UserMessageBinding userMessageBinding) throws IOException, TimeoutException
|
|
|
{
|
|
|
Connection connection = getConnection(server.getServerIp(), server.getServerPort(), virtualHostName, server.getSuperUsername(), server.getSuperPassword());
|
|
|
Channel channel = connection.createChannel();
|
|
|
channel.queueUnbind(userMessageBinding.getQueueName(),
|
|
|
userMessageBinding.getExchangeName(),
|
|
|
userMessageBinding.getRoutingKeyName());
|
|
|
// #method<queue.unbind-ok>()
|
|
|
AMQP.Queue.UnbindOk unbindOk = channel.queueUnbind(userMessageBinding.getQueueName(), userMessageBinding.getExchangeName(), userMessageBinding.getRoutingKeyName());
|
|
|
closeConnectionAndChanel(channel, connection);
|
|
|
|
|
|
return unbindOk.toString().contains("unbind-ok")
|
|
|
? ResultJson.success("解除MQ绑定关系,成功")
|
|
|
: new ResultJson<>("500", "MQ服务异常,解除MQ绑定关系" + ",失败");
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 前往创建交换机的路上
|
|
|
*/
|
|
|
public void toCreateExchange(BusExchange busExchange)
|
|
|
throws IOException, TimeoutException
|
|
|
public ResultJson toCreateExchange(BusExchange busExchange) throws IOException, TimeoutException
|
|
|
{
|
|
|
VirtualHost virtualHost = getVirtualHost(busExchange.getVirtualHostId());
|
|
|
BusServer busServer = getBusServer(virtualHost.getServerId());
|
|
|
createExchange(busServer, virtualHost.getVirtualHostName(), busExchange);
|
|
|
return createExchange(busServer, virtualHost.getVirtualHostName(), busExchange);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 前往删除交换机的路上
|
|
|
*/
|
|
|
public void toRemoveExchange(BusExchange busExchange)
|
|
|
throws IOException, TimeoutException
|
|
|
public ResultJson toRemoveExchange(BusExchange busExchange) throws IOException, TimeoutException
|
|
|
{
|
|
|
VirtualHost virtualHost = getVirtualHost(busExchange.getVirtualHostId());
|
|
|
BusServer busServer = getBusServer(virtualHost.getServerId());
|
|
|
removeExchange(busServer, virtualHost.getVirtualHostName(), busExchange);
|
|
|
return removeExchange(busServer, virtualHost.getVirtualHostName(), busExchange);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 前往创建队列的路上
|
|
|
*/
|
|
|
public void toCreateQueue(BusQueue BusQueue)
|
|
|
throws IOException, TimeoutException
|
|
|
public ResultJson toCreateQueue(BusQueue BusQueue) throws IOException, TimeoutException
|
|
|
{
|
|
|
VirtualHost virtualHost = getVirtualHost(BusQueue.getVirtualHostId());
|
|
|
BusServer busServer = getBusServer(virtualHost.getServerId());
|
|
|
createQueue(busServer, virtualHost.getVirtualHostName(), BusQueue);
|
|
|
return createQueue(busServer, virtualHost.getVirtualHostName(), BusQueue);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 前往删除队列的路上
|
|
|
*/
|
|
|
public void toRemoveQueue(BusQueue BusQueue)
|
|
|
throws IOException, TimeoutException
|
|
|
public ResultJson toRemoveQueue(BusQueue BusQueue) throws IOException, TimeoutException
|
|
|
{
|
|
|
VirtualHost virtualHost = getVirtualHost(BusQueue.getVirtualHostId());
|
|
|
BusServer busServer = getBusServer(virtualHost.getServerId());
|
|
|
removeQueue(busServer, virtualHost.getVirtualHostName(), BusQueue);
|
|
|
return removeQueue(busServer, virtualHost.getVirtualHostName(), BusQueue);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 前往创建绑定的路上
|
|
|
*/
|
|
|
public void toCreateBinding(UserMessageBinding userMessageBinding)
|
|
|
public ResultJson toCreateBinding(UserMessageBinding userMessageBinding)
|
|
|
throws IOException, TimeoutException
|
|
|
{
|
|
|
VirtualHost virtualHost = getVirtualHost(userMessageBinding.getVirtualHostId());
|
|
|
BusServer busServer = getBusServer(virtualHost.getServerId());
|
|
|
createBinding(busServer, virtualHost.getVirtualHostName(), userMessageBinding);
|
|
|
return createBinding(busServer, virtualHost.getVirtualHostName(), userMessageBinding);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 前往解除绑定的路上
|
|
|
*/
|
|
|
public void toRemoveBinding(UserMessageBinding userMessageBinding)
|
|
|
throws IOException, TimeoutException
|
|
|
public ResultJson toRemoveBinding(UserMessageBinding userMessageBinding) throws IOException, TimeoutException
|
|
|
{
|
|
|
VirtualHost virtualHost = getVirtualHost(userMessageBinding.getVirtualHostId());
|
|
|
BusServer busServer = getBusServer(virtualHost.getServerId());
|
|
|
removeBinding(busServer, virtualHost.getVirtualHostName(), userMessageBinding);
|
|
|
return removeBinding(busServer, virtualHost.getVirtualHostName(), userMessageBinding);
|
|
|
}
|
|
|
|
|
|
/**
|
...
|
...
|
|