正在显示
17 个修改的文件
包含
309 行增加
和
270 行删除
| @@ -62,9 +62,7 @@ public class BusExchangeController { | @@ -62,9 +62,7 @@ public class BusExchangeController { | ||
| 62 | public ResultJson deleteBusExchange(@RequestBody BusExchange busExchange) | 62 | public ResultJson deleteBusExchange(@RequestBody BusExchange busExchange) |
| 63 | { | 63 | { |
| 64 | try { | 64 | try { |
| 65 | - return busExchangeService.deleteByPrimaryKey(busExchange.getId()) > 0 | ||
| 66 | - ? new ResultJson<>("200", "删除MQ交换机,成功") | ||
| 67 | - : new ResultJson<>("500", "删除MQ交换机,失败"); | 65 | + return busExchangeService.deleteByPrimaryKey(busExchange.getId()); |
| 68 | } catch (IOException | TimeoutException e) { | 66 | } catch (IOException | TimeoutException e) { |
| 69 | return new ResultJson<>("500", "服务器异常,删除MQ交换机,失败"); | 67 | return new ResultJson<>("500", "服务器异常,删除MQ交换机,失败"); |
| 70 | } | 68 | } |
| @@ -80,9 +78,7 @@ public class BusExchangeController { | @@ -80,9 +78,7 @@ public class BusExchangeController { | ||
| 80 | public ResultJson batchRemoveBusExchange(String ids) | 78 | public ResultJson batchRemoveBusExchange(String ids) |
| 81 | { | 79 | { |
| 82 | try { | 80 | try { |
| 83 | - return busExchangeService.deleteByPrimaryKey(ids) > 0 | ||
| 84 | - ? new ResultJson<>("200", "批量删除MQ交换机,成功") | ||
| 85 | - : new ResultJson<>("500", "批量删除MQ交换机,失败"); | 81 | + return busExchangeService.deleteByPrimaryKey(ids); |
| 86 | } catch (IOException | TimeoutException e) { | 82 | } catch (IOException | TimeoutException e) { |
| 87 | return new ResultJson<>("500", "服务器异常,批量删除MQ交换机,失败"); | 83 | return new ResultJson<>("500", "服务器异常,批量删除MQ交换机,失败"); |
| 88 | } | 84 | } |
| @@ -122,9 +118,7 @@ public class BusExchangeController { | @@ -122,9 +118,7 @@ public class BusExchangeController { | ||
| 122 | // 设置id | 118 | // 设置id |
| 123 | busExchange.setId(IdUtils.generateId()); | 119 | busExchange.setId(IdUtils.generateId()); |
| 124 | return message == null | 120 | return message == null |
| 125 | - ? busExchangeService.insertSelective(busExchange) > 0 | ||
| 126 | - ? new ResultJson<>("200", "新增MQ交换机信息,成功") | ||
| 127 | - : new ResultJson<>("500", "新增MQ交换机信息,失败") | 121 | + ? busExchangeService.insertSelective(busExchange) |
| 128 | : new ResultJson<>("400", message); | 122 | : new ResultJson<>("400", message); |
| 129 | } catch (IOException | TimeoutException e) { | 123 | } catch (IOException | TimeoutException e) { |
| 130 | return new ResultJson<>("500", "新增MQ交换机信息,失败"); | 124 | return new ResultJson<>("500", "新增MQ交换机信息,失败"); |
| @@ -73,7 +73,7 @@ public class BusQueueController { | @@ -73,7 +73,7 @@ public class BusQueueController { | ||
| 73 | return busQueueService.deleteByPrimaryKey(busQueue.getId()) > 0 | 73 | return busQueueService.deleteByPrimaryKey(busQueue.getId()) > 0 |
| 74 | ? new ResultJson<>("200", "删除消息队列,成功") | 74 | ? new ResultJson<>("200", "删除消息队列,成功") |
| 75 | : new ResultJson<>("500", "删除消息队列,失败"); | 75 | : new ResultJson<>("500", "删除消息队列,失败"); |
| 76 | - } catch (IOException | TimeoutException e) { | 76 | + } catch (IOException | TimeoutException | InterruptedException e) { |
| 77 | return new ResultJson<>("500", "服务器异常,删除消息队列,失败"); | 77 | return new ResultJson<>("500", "服务器异常,删除消息队列,失败"); |
| 78 | } | 78 | } |
| 79 | } | 79 | } |
| @@ -91,7 +91,7 @@ public class BusQueueController { | @@ -91,7 +91,7 @@ public class BusQueueController { | ||
| 91 | return busQueueService.deleteByPrimaryKey(ids) > 0 | 91 | return busQueueService.deleteByPrimaryKey(ids) > 0 |
| 92 | ? new ResultJson<>("200", "批量删除MQ消息队列,成功") | 92 | ? new ResultJson<>("200", "批量删除MQ消息队列,成功") |
| 93 | : new ResultJson<>("500", "批量删除MQ消息队列,失败"); | 93 | : new ResultJson<>("500", "批量删除MQ消息队列,失败"); |
| 94 | - } catch (IOException | TimeoutException e) { | 94 | + } catch (IOException | TimeoutException | InterruptedException e) { |
| 95 | return new ResultJson<>("500", "服务器异常,批量删除MQ消息队列,失败"); | 95 | return new ResultJson<>("500", "服务器异常,批量删除MQ消息队列,失败"); |
| 96 | } | 96 | } |
| 97 | } | 97 | } |
| @@ -4,8 +4,8 @@ import com.sunyo.wlpt.message.bus.service.domain.XmlData; | @@ -4,8 +4,8 @@ import com.sunyo.wlpt.message.bus.service.domain.XmlData; | ||
| 4 | import com.sunyo.wlpt.message.bus.service.exception.CustomExceptionType; | 4 | import com.sunyo.wlpt.message.bus.service.exception.CustomExceptionType; |
| 5 | import com.sunyo.wlpt.message.bus.service.rabbit.utils.DirectUtils; | 5 | import com.sunyo.wlpt.message.bus.service.rabbit.utils.DirectUtils; |
| 6 | import com.sunyo.wlpt.message.bus.service.response.ResultJson; | 6 | import com.sunyo.wlpt.message.bus.service.response.ResultJson; |
| 7 | -import com.sunyo.wlpt.message.bus.service.service.impl.AsyncTaskService; | ||
| 8 | import com.sunyo.wlpt.message.bus.service.service.UserMessageBindingService; | 7 | import com.sunyo.wlpt.message.bus.service.service.UserMessageBindingService; |
| 8 | +import com.sunyo.wlpt.message.bus.service.service.impl.AsyncTaskService; | ||
| 9 | import com.sunyo.wlpt.message.bus.service.utils.XmlUtils; | 9 | import com.sunyo.wlpt.message.bus.service.utils.XmlUtils; |
| 10 | import lombok.extern.slf4j.Slf4j; | 10 | import lombok.extern.slf4j.Slf4j; |
| 11 | import org.dom4j.DocumentException; | 11 | import org.dom4j.DocumentException; |
| @@ -15,6 +15,8 @@ import org.springframework.web.bind.annotation.*; | @@ -15,6 +15,8 @@ import org.springframework.web.bind.annotation.*; | ||
| 15 | import javax.annotation.Resource; | 15 | import javax.annotation.Resource; |
| 16 | import java.io.IOException; | 16 | import java.io.IOException; |
| 17 | import java.util.Date; | 17 | import java.util.Date; |
| 18 | +import java.util.concurrent.CountDownLatch; | ||
| 19 | +import java.util.concurrent.Future; | ||
| 18 | import java.util.concurrent.TimeoutException; | 20 | import java.util.concurrent.TimeoutException; |
| 19 | 21 | ||
| 20 | /** | 22 | /** |
| @@ -113,17 +115,20 @@ public class RabbitController { | @@ -113,17 +115,20 @@ public class RabbitController { | ||
| 113 | } | 115 | } |
| 114 | // 4、mq发送消息,数据库中保存消息并保存至ES | 116 | // 4、mq发送消息,数据库中保存消息并保存至ES |
| 115 | return sendAndSave(sentData); | 117 | return sendAndSave(sentData); |
| 116 | - } catch (IOException | TimeoutException e) { | 118 | + } catch (IOException | TimeoutException | InterruptedException e) { |
| 117 | return ResultJson.error(CustomExceptionType.SERVER_EXCEPTION); | 119 | return ResultJson.error(CustomExceptionType.SERVER_EXCEPTION); |
| 118 | } | 120 | } |
| 119 | } | 121 | } |
| 120 | 122 | ||
| 121 | - public ResultJson sendAndSave(XmlData sentData) throws IOException, TimeoutException | 123 | + public ResultJson sendAndSave(XmlData sentData) throws IOException, TimeoutException, InterruptedException |
| 122 | { | 124 | { |
| 123 | // 4、mq发送消息,数据库中保存消息 | 125 | // 4、mq发送消息,数据库中保存消息 |
| 124 | ResultJson result = directUtils.sendMessage(sentData); | 126 | ResultJson result = directUtils.sendMessage(sentData); |
| 127 | + | ||
| 125 | // 异步,保存消息记录 | 128 | // 异步,保存消息记录 |
| 126 | - asyncTaskService.saveMessage(sentData); | 129 | + CountDownLatch latch = new CountDownLatch(1); |
| 130 | + Future<String> future = asyncTaskService.saveMessage(sentData, latch); | ||
| 131 | + latch.await(); | ||
| 127 | return result; | 132 | return result; |
| 128 | } | 133 | } |
| 129 | } | 134 | } |
| @@ -80,7 +80,7 @@ public class UserInfoController { | @@ -80,7 +80,7 @@ public class UserInfoController { | ||
| 80 | } | 80 | } |
| 81 | 81 | ||
| 82 | /** | 82 | /** |
| 83 | - * 编辑用户信息 | 83 | + * 修改用户密码 |
| 84 | * | 84 | * |
| 85 | * @param userInfo {@link UserInfo} | 85 | * @param userInfo {@link UserInfo} |
| 86 | * @return | 86 | * @return |
| @@ -103,13 +103,13 @@ public class UserInfoController { | @@ -103,13 +103,13 @@ public class UserInfoController { | ||
| 103 | { | 103 | { |
| 104 | try { | 104 | try { |
| 105 | return userInfoService.deleteUserInfo(userInfo); | 105 | return userInfoService.deleteUserInfo(userInfo); |
| 106 | - } catch (IOException | URISyntaxException e) { | 106 | + } catch (IOException | URISyntaxException | TimeoutException | InterruptedException e) { |
| 107 | return new ResultJson<>("500", "服务器异常,删除用户失败"); | 107 | return new ResultJson<>("500", "服务器异常,删除用户失败"); |
| 108 | } | 108 | } |
| 109 | } | 109 | } |
| 110 | 110 | ||
| 111 | /** | 111 | /** |
| 112 | - * 删除数据关系(MQ服务器 and 数据库) | 112 | + * 删除用户关系(MQ服务器 and 数据库) |
| 113 | */ | 113 | */ |
| 114 | @DeleteMapping("/deleteRelation") | 114 | @DeleteMapping("/deleteRelation") |
| 115 | public ResultJson deleteUserRelation(@RequestBody UserInfo userInfo) | 115 | public ResultJson deleteUserRelation(@RequestBody UserInfo userInfo) |
| @@ -2,6 +2,7 @@ package com.sunyo.wlpt.message.bus.service.mapper; | @@ -2,6 +2,7 @@ package com.sunyo.wlpt.message.bus.service.mapper; | ||
| 2 | 2 | ||
| 3 | import com.sunyo.wlpt.message.bus.service.domain.BusQueue; | 3 | import com.sunyo.wlpt.message.bus.service.domain.BusQueue; |
| 4 | import org.apache.ibatis.annotations.Mapper; | 4 | import org.apache.ibatis.annotations.Mapper; |
| 5 | +import org.apache.ibatis.annotations.Param; | ||
| 5 | 6 | ||
| 6 | import java.util.List; | 7 | import java.util.List; |
| 7 | 8 | ||
| @@ -107,4 +108,13 @@ public interface BusQueueMapper { | @@ -107,4 +108,13 @@ public interface BusQueueMapper { | ||
| 107 | * @return | 108 | * @return |
| 108 | */ | 109 | */ |
| 109 | List<BusQueue> selectByUsername(String username); | 110 | List<BusQueue> selectByUsername(String username); |
| 111 | + | ||
| 112 | + /** | ||
| 113 | + * 根据用户名称和虚拟主机Id查询队列信息 | ||
| 114 | + * | ||
| 115 | + * @param username 用户名称 | ||
| 116 | + * @param virtualHostId 虚拟主机Id | ||
| 117 | + * @return | ||
| 118 | + */ | ||
| 119 | + List<BusQueue> selectByUsernameAndHostId(@Param("username") String username, @Param("virtualHostId") String virtualHostId); | ||
| 110 | } | 120 | } |
| @@ -119,6 +119,15 @@ public interface UserInfoMapper { | @@ -119,6 +119,15 @@ public interface UserInfoMapper { | ||
| 119 | int deleteByUsername(String username); | 119 | int deleteByUsername(String username); |
| 120 | 120 | ||
| 121 | /** | 121 | /** |
| 122 | + * 根据用户名称和服务器名称删除用户信息 | ||
| 123 | + * | ||
| 124 | + * @param username 用户名称 | ||
| 125 | + * @param serverName 服务器名称 | ||
| 126 | + * @return | ||
| 127 | + */ | ||
| 128 | + int deleteByUsernameAndServerName(@Param("username") String username, @Param("serverName") String serverName); | ||
| 129 | + | ||
| 130 | + /** | ||
| 122 | * 根据服务器名称,删除用户关系 | 131 | * 根据服务器名称,删除用户关系 |
| 123 | * | 132 | * |
| 124 | * @param serverName 服务器名称 | 133 | * @param serverName 服务器名称 |
| @@ -134,4 +143,12 @@ public interface UserInfoMapper { | @@ -134,4 +143,12 @@ public interface UserInfoMapper { | ||
| 134 | */ | 143 | */ |
| 135 | int deleteByHostName(String hostName); | 144 | int deleteByHostName(String hostName); |
| 136 | 145 | ||
| 146 | + /** | ||
| 147 | + * 根据用户名称和服务器名称,查询用户信息 | ||
| 148 | + * | ||
| 149 | + * @param username 用户名称 | ||
| 150 | + * @param serverName 服务器名称 | ||
| 151 | + * @return | ||
| 152 | + */ | ||
| 153 | + List<UserInfo> selectByUsernameAndServerName(@Param("username") String username, @Param("serverName") String serverName); | ||
| 137 | } | 154 | } |
| 1 | package com.sunyo.wlpt.message.bus.service.rabbit.utils; | 1 | package com.sunyo.wlpt.message.bus.service.rabbit.utils; |
| 2 | 2 | ||
| 3 | +import com.rabbitmq.client.AMQP; | ||
| 3 | import com.rabbitmq.client.Channel; | 4 | import com.rabbitmq.client.Channel; |
| 4 | import com.rabbitmq.client.Connection; | 5 | import com.rabbitmq.client.Connection; |
| 5 | import com.rabbitmq.client.ConnectionFactory; | 6 | import com.rabbitmq.client.ConnectionFactory; |
| 6 | import com.sunyo.wlpt.message.bus.service.domain.*; | 7 | import com.sunyo.wlpt.message.bus.service.domain.*; |
| 8 | +import com.sunyo.wlpt.message.bus.service.response.ResultJson; | ||
| 7 | import com.sunyo.wlpt.message.bus.service.service.BusServerService; | 9 | import com.sunyo.wlpt.message.bus.service.service.BusServerService; |
| 8 | import com.sunyo.wlpt.message.bus.service.service.VirtualHostService; | 10 | import com.sunyo.wlpt.message.bus.service.service.VirtualHostService; |
| 9 | import com.sunyo.wlpt.message.bus.service.utils.EncryptionUtils; | 11 | import com.sunyo.wlpt.message.bus.service.utils.EncryptionUtils; |
| @@ -106,46 +108,67 @@ public class RabbitUtils { | @@ -106,46 +108,67 @@ public class RabbitUtils { | ||
| 106 | /** | 108 | /** |
| 107 | * 添加交换机 | 109 | * 添加交换机 |
| 108 | */ | 110 | */ |
| 109 | - public void createExchange(BusServer server, String virtualHostName, BusExchange busExchange) | 111 | + public ResultJson createExchange(BusServer server, String virtualHostName, BusExchange busExchange) |
| 110 | throws IOException, TimeoutException | 112 | throws IOException, TimeoutException |
| 111 | { | 113 | { |
| 114 | + String exchangeName = busExchange.getExchangeName(); | ||
| 115 | + | ||
| 112 | Connection connection = getConnection(server.getServerIp(), server.getServerPort(), virtualHostName, server.getSuperUsername(), server.getSuperPassword()); | 116 | Connection connection = getConnection(server.getServerIp(), server.getServerPort(), virtualHostName, server.getSuperUsername(), server.getSuperPassword()); |
| 113 | Channel channel = connection.createChannel(); | 117 | Channel channel = connection.createChannel(); |
| 114 | - channel.exchangeDeclare(busExchange.getExchangeName(), | 118 | + // 添加交换机成功,declareOk.toString是 #method<exchange.declare-ok>() |
| 119 | + AMQP.Exchange.DeclareOk declareOk = channel.exchangeDeclare(exchangeName, | ||
| 115 | busExchange.getExchangeType(), | 120 | busExchange.getExchangeType(), |
| 116 | busExchange.getDurability(), | 121 | busExchange.getDurability(), |
| 117 | busExchange.getAutoDelete(), | 122 | busExchange.getAutoDelete(), |
| 118 | busExchange.getInternal(), | 123 | busExchange.getInternal(), |
| 119 | null); | 124 | null); |
| 120 | closeConnectionAndChanel(channel, connection); | 125 | closeConnectionAndChanel(channel, connection); |
| 126 | + | ||
| 127 | + return declareOk.toString().contains("declare-ok") | ||
| 128 | + ? ResultJson.success("添加MQ交换机,成功") | ||
| 129 | + : new ResultJson<>("500", "MQ服务异常,添加MQ交换机:" + exchangeName + ",失败"); | ||
| 121 | } | 130 | } |
| 122 | 131 | ||
| 123 | /** | 132 | /** |
| 124 | * 删除交换机 channel.exchangeDelete(exchangeName); | 133 | * 删除交换机 channel.exchangeDelete(exchangeName); |
| 125 | */ | 134 | */ |
| 126 | - public void removeExchange(BusServer server, String virtualHostName, BusExchange busExchange) | 135 | + public ResultJson removeExchange(BusServer server, String virtualHostName, BusExchange busExchange) |
| 127 | throws IOException, TimeoutException | 136 | throws IOException, TimeoutException |
| 128 | { | 137 | { |
| 138 | + String exchangeName = busExchange.getExchangeName(); | ||
| 139 | + | ||
| 129 | Connection connection = getConnection(server.getServerIp(), server.getServerPort(), virtualHostName, server.getSuperUsername(), server.getSuperPassword()); | 140 | Connection connection = getConnection(server.getServerIp(), server.getServerPort(), virtualHostName, server.getSuperUsername(), server.getSuperPassword()); |
| 130 | Channel channel = connection.createChannel(); | 141 | Channel channel = connection.createChannel(); |
| 131 | - channel.exchangeDelete(busExchange.getExchangeName()); | 142 | + // 删除成功的时候,deleteOk.toString是"#method<exchange.delete-ok>()" |
| 143 | + AMQP.Exchange.DeleteOk deleteOk = channel.exchangeDelete(exchangeName); | ||
| 132 | closeConnectionAndChanel(channel, connection); | 144 | closeConnectionAndChanel(channel, connection); |
| 145 | + | ||
| 146 | + return deleteOk.toString().contains("delete-ok") | ||
| 147 | + ? ResultJson.success("删除MQ交换机,成功") | ||
| 148 | + : new ResultJson<>("500", "MQ服务异常,删除MQ交换机:" + exchangeName + ",失败"); | ||
| 133 | } | 149 | } |
| 134 | 150 | ||
| 135 | /** | 151 | /** |
| 136 | * 添加队列(默认设置参数为 null) | 152 | * 添加队列(默认设置参数为 null) |
| 137 | */ | 153 | */ |
| 138 | - public void createQueue(BusServer server, String virtualHostName, BusQueue busQueue) | 154 | + public ResultJson createQueue(BusServer server, String virtualHostName, BusQueue busQueue) |
| 139 | throws IOException, TimeoutException | 155 | throws IOException, TimeoutException |
| 140 | { | 156 | { |
| 157 | + String queueName = busQueue.getQueueName(); | ||
| 158 | + | ||
| 141 | Connection connection = getConnection(server.getServerIp(), server.getServerPort(), virtualHostName, server.getSuperUsername(), server.getSuperPassword()); | 159 | Connection connection = getConnection(server.getServerIp(), server.getServerPort(), virtualHostName, server.getSuperUsername(), server.getSuperPassword()); |
| 142 | Channel channel = connection.createChannel(); | 160 | Channel channel = connection.createChannel(); |
| 143 | - channel.queueDeclare(busQueue.getQueueName(), | 161 | + // 成功时,deleteOk.toString是"#method<exchange.declare-ok>()" |
| 162 | + AMQP.Queue.DeclareOk declareOk = channel.queueDeclare(queueName, | ||
| 144 | busQueue.getDurability(), | 163 | busQueue.getDurability(), |
| 145 | false, | 164 | false, |
| 146 | busQueue.getAutoDelete(), | 165 | busQueue.getAutoDelete(), |
| 147 | null); | 166 | null); |
| 148 | closeConnectionAndChanel(channel, connection); | 167 | closeConnectionAndChanel(channel, connection); |
| 168 | + | ||
| 169 | + return declareOk.toString().contains("declare-ok") | ||
| 170 | + ? ResultJson.success("添加MQ队列,成功") | ||
| 171 | + : new ResultJson<>("500", "MQ服务异常,添加MQ队列:" + queueName + ",失败"); | ||
| 149 | } | 172 | } |
| 150 | 173 | ||
| 151 | /** | 174 | /** |
| @@ -155,107 +178,113 @@ public class RabbitUtils { | @@ -155,107 +178,113 @@ public class RabbitUtils { | ||
| 155 | /** | 178 | /** |
| 156 | * 删除队列 channel.queueDelete(queueName); | 179 | * 删除队列 channel.queueDelete(queueName); |
| 157 | */ | 180 | */ |
| 158 | - public void removeQueue(BusServer server, String virtualHostName, BusQueue busQueue) | 181 | + public ResultJson removeQueue(BusServer server, String virtualHostName, BusQueue busQueue) |
| 159 | throws IOException, TimeoutException | 182 | throws IOException, TimeoutException |
| 160 | { | 183 | { |
| 184 | + String queueName = busQueue.getQueueName(); | ||
| 185 | + | ||
| 161 | Connection connection = getConnection(server.getServerIp(), server.getServerPort(), virtualHostName, server.getSuperUsername(), server.getSuperPassword()); | 186 | Connection connection = getConnection(server.getServerIp(), server.getServerPort(), virtualHostName, server.getSuperUsername(), server.getSuperPassword()); |
| 162 | Channel channel = connection.createChannel(); | 187 | Channel channel = connection.createChannel(); |
| 163 | - channel.queueDelete(busQueue.getQueueName()); | 188 | + AMQP.Queue.DeleteOk deleteOk = channel.queueDelete(queueName); |
| 164 | closeConnectionAndChanel(channel, connection); | 189 | closeConnectionAndChanel(channel, connection); |
| 190 | + | ||
| 191 | + return deleteOk.toString().contains("delete-ok") | ||
| 192 | + ? ResultJson.success("删除MQ队列,成功") | ||
| 193 | + : new ResultJson<>("500", "MQ服务异常,删除MQ队列:" + queueName + ",失败"); | ||
| 165 | } | 194 | } |
| 166 | 195 | ||
| 167 | /** | 196 | /** |
| 168 | * 创建绑定 | 197 | * 创建绑定 |
| 169 | */ | 198 | */ |
| 170 | - public void createBinding(BusServer server, String virtualHostName, UserMessageBinding userMessageBinding) | 199 | + public ResultJson createBinding(BusServer server, String virtualHostName, UserMessageBinding userMessageBinding) |
| 171 | throws IOException, TimeoutException | 200 | throws IOException, TimeoutException |
| 172 | { | 201 | { |
| 173 | Connection connection = getConnection(server.getServerIp(), server.getServerPort(), virtualHostName, server.getSuperUsername(), server.getSuperPassword()); | 202 | Connection connection = getConnection(server.getServerIp(), server.getServerPort(), virtualHostName, server.getSuperUsername(), server.getSuperPassword()); |
| 174 | Channel channel = connection.createChannel(); | 203 | Channel channel = connection.createChannel(); |
| 175 | - channel.queueBind(userMessageBinding.getQueueName(), | ||
| 176 | - userMessageBinding.getExchangeName(), | ||
| 177 | - userMessageBinding.getRoutingKeyName()); | 204 | + // #method<queue.bind-ok>() |
| 205 | + AMQP.Queue.BindOk bindOk = channel.queueBind(userMessageBinding.getQueueName(), userMessageBinding.getExchangeName(), userMessageBinding.getRoutingKeyName()); | ||
| 178 | closeConnectionAndChanel(channel, connection); | 206 | closeConnectionAndChanel(channel, connection); |
| 207 | + | ||
| 208 | + return bindOk.toString().contains("bind-ok") | ||
| 209 | + ? ResultJson.success("创建MQ绑定关系,成功") | ||
| 210 | + : new ResultJson<>("500", "MQ服务异常,创建MQ绑定关系" + ",失败"); | ||
| 179 | } | 211 | } |
| 180 | 212 | ||
| 181 | /** | 213 | /** |
| 182 | * 解除绑定 channel.queueUnbind("queueName", "exchangeName","routingKey"); | 214 | * 解除绑定 channel.queueUnbind("queueName", "exchangeName","routingKey"); |
| 183 | */ | 215 | */ |
| 184 | - public void removeBinding(BusServer server, String virtualHostName, UserMessageBinding userMessageBinding) | ||
| 185 | - throws IOException, TimeoutException | 216 | + public ResultJson removeBinding(BusServer server, String virtualHostName, UserMessageBinding userMessageBinding) throws IOException, TimeoutException |
| 186 | { | 217 | { |
| 187 | Connection connection = getConnection(server.getServerIp(), server.getServerPort(), virtualHostName, server.getSuperUsername(), server.getSuperPassword()); | 218 | Connection connection = getConnection(server.getServerIp(), server.getServerPort(), virtualHostName, server.getSuperUsername(), server.getSuperPassword()); |
| 188 | Channel channel = connection.createChannel(); | 219 | Channel channel = connection.createChannel(); |
| 189 | - channel.queueUnbind(userMessageBinding.getQueueName(), | ||
| 190 | - userMessageBinding.getExchangeName(), | ||
| 191 | - userMessageBinding.getRoutingKeyName()); | 220 | + // #method<queue.unbind-ok>() |
| 221 | + AMQP.Queue.UnbindOk unbindOk = channel.queueUnbind(userMessageBinding.getQueueName(), userMessageBinding.getExchangeName(), userMessageBinding.getRoutingKeyName()); | ||
| 192 | closeConnectionAndChanel(channel, connection); | 222 | closeConnectionAndChanel(channel, connection); |
| 223 | + | ||
| 224 | + return unbindOk.toString().contains("unbind-ok") | ||
| 225 | + ? ResultJson.success("解除MQ绑定关系,成功") | ||
| 226 | + : new ResultJson<>("500", "MQ服务异常,解除MQ绑定关系" + ",失败"); | ||
| 193 | } | 227 | } |
| 194 | 228 | ||
| 195 | /** | 229 | /** |
| 196 | * 前往创建交换机的路上 | 230 | * 前往创建交换机的路上 |
| 197 | */ | 231 | */ |
| 198 | - public void toCreateExchange(BusExchange busExchange) | ||
| 199 | - throws IOException, TimeoutException | 232 | + public ResultJson toCreateExchange(BusExchange busExchange) throws IOException, TimeoutException |
| 200 | { | 233 | { |
| 201 | VirtualHost virtualHost = getVirtualHost(busExchange.getVirtualHostId()); | 234 | VirtualHost virtualHost = getVirtualHost(busExchange.getVirtualHostId()); |
| 202 | BusServer busServer = getBusServer(virtualHost.getServerId()); | 235 | BusServer busServer = getBusServer(virtualHost.getServerId()); |
| 203 | - createExchange(busServer, virtualHost.getVirtualHostName(), busExchange); | 236 | + return createExchange(busServer, virtualHost.getVirtualHostName(), busExchange); |
| 204 | } | 237 | } |
| 205 | 238 | ||
| 206 | /** | 239 | /** |
| 207 | * 前往删除交换机的路上 | 240 | * 前往删除交换机的路上 |
| 208 | */ | 241 | */ |
| 209 | - public void toRemoveExchange(BusExchange busExchange) | ||
| 210 | - throws IOException, TimeoutException | 242 | + public ResultJson toRemoveExchange(BusExchange busExchange) throws IOException, TimeoutException |
| 211 | { | 243 | { |
| 212 | VirtualHost virtualHost = getVirtualHost(busExchange.getVirtualHostId()); | 244 | VirtualHost virtualHost = getVirtualHost(busExchange.getVirtualHostId()); |
| 213 | BusServer busServer = getBusServer(virtualHost.getServerId()); | 245 | BusServer busServer = getBusServer(virtualHost.getServerId()); |
| 214 | - removeExchange(busServer, virtualHost.getVirtualHostName(), busExchange); | 246 | + return removeExchange(busServer, virtualHost.getVirtualHostName(), busExchange); |
| 215 | } | 247 | } |
| 216 | 248 | ||
| 217 | /** | 249 | /** |
| 218 | * 前往创建队列的路上 | 250 | * 前往创建队列的路上 |
| 219 | */ | 251 | */ |
| 220 | - public void toCreateQueue(BusQueue BusQueue) | ||
| 221 | - throws IOException, TimeoutException | 252 | + public ResultJson toCreateQueue(BusQueue BusQueue) throws IOException, TimeoutException |
| 222 | { | 253 | { |
| 223 | VirtualHost virtualHost = getVirtualHost(BusQueue.getVirtualHostId()); | 254 | VirtualHost virtualHost = getVirtualHost(BusQueue.getVirtualHostId()); |
| 224 | BusServer busServer = getBusServer(virtualHost.getServerId()); | 255 | BusServer busServer = getBusServer(virtualHost.getServerId()); |
| 225 | - createQueue(busServer, virtualHost.getVirtualHostName(), BusQueue); | 256 | + return createQueue(busServer, virtualHost.getVirtualHostName(), BusQueue); |
| 226 | } | 257 | } |
| 227 | 258 | ||
| 228 | /** | 259 | /** |
| 229 | * 前往删除队列的路上 | 260 | * 前往删除队列的路上 |
| 230 | */ | 261 | */ |
| 231 | - public void toRemoveQueue(BusQueue BusQueue) | ||
| 232 | - throws IOException, TimeoutException | 262 | + public ResultJson toRemoveQueue(BusQueue BusQueue) throws IOException, TimeoutException |
| 233 | { | 263 | { |
| 234 | VirtualHost virtualHost = getVirtualHost(BusQueue.getVirtualHostId()); | 264 | VirtualHost virtualHost = getVirtualHost(BusQueue.getVirtualHostId()); |
| 235 | BusServer busServer = getBusServer(virtualHost.getServerId()); | 265 | BusServer busServer = getBusServer(virtualHost.getServerId()); |
| 236 | - removeQueue(busServer, virtualHost.getVirtualHostName(), BusQueue); | 266 | + return removeQueue(busServer, virtualHost.getVirtualHostName(), BusQueue); |
| 237 | } | 267 | } |
| 238 | 268 | ||
| 239 | /** | 269 | /** |
| 240 | * 前往创建绑定的路上 | 270 | * 前往创建绑定的路上 |
| 241 | */ | 271 | */ |
| 242 | - public void toCreateBinding(UserMessageBinding userMessageBinding) | 272 | + public ResultJson toCreateBinding(UserMessageBinding userMessageBinding) |
| 243 | throws IOException, TimeoutException | 273 | throws IOException, TimeoutException |
| 244 | { | 274 | { |
| 245 | VirtualHost virtualHost = getVirtualHost(userMessageBinding.getVirtualHostId()); | 275 | VirtualHost virtualHost = getVirtualHost(userMessageBinding.getVirtualHostId()); |
| 246 | BusServer busServer = getBusServer(virtualHost.getServerId()); | 276 | BusServer busServer = getBusServer(virtualHost.getServerId()); |
| 247 | - createBinding(busServer, virtualHost.getVirtualHostName(), userMessageBinding); | 277 | + return createBinding(busServer, virtualHost.getVirtualHostName(), userMessageBinding); |
| 248 | } | 278 | } |
| 249 | 279 | ||
| 250 | /** | 280 | /** |
| 251 | * 前往解除绑定的路上 | 281 | * 前往解除绑定的路上 |
| 252 | */ | 282 | */ |
| 253 | - public void toRemoveBinding(UserMessageBinding userMessageBinding) | ||
| 254 | - throws IOException, TimeoutException | 283 | + public ResultJson toRemoveBinding(UserMessageBinding userMessageBinding) throws IOException, TimeoutException |
| 255 | { | 284 | { |
| 256 | VirtualHost virtualHost = getVirtualHost(userMessageBinding.getVirtualHostId()); | 285 | VirtualHost virtualHost = getVirtualHost(userMessageBinding.getVirtualHostId()); |
| 257 | BusServer busServer = getBusServer(virtualHost.getServerId()); | 286 | BusServer busServer = getBusServer(virtualHost.getServerId()); |
| 258 | - removeBinding(busServer, virtualHost.getVirtualHostName(), userMessageBinding); | 287 | + return removeBinding(busServer, virtualHost.getVirtualHostName(), userMessageBinding); |
| 259 | } | 288 | } |
| 260 | 289 | ||
| 261 | /** | 290 | /** |
| @@ -2,6 +2,7 @@ package com.sunyo.wlpt.message.bus.service.service; | @@ -2,6 +2,7 @@ package com.sunyo.wlpt.message.bus.service.service; | ||
| 2 | 2 | ||
| 3 | import com.github.pagehelper.PageInfo; | 3 | import com.github.pagehelper.PageInfo; |
| 4 | import com.sunyo.wlpt.message.bus.service.domain.BusExchange; | 4 | import com.sunyo.wlpt.message.bus.service.domain.BusExchange; |
| 5 | +import com.sunyo.wlpt.message.bus.service.response.ResultJson; | ||
| 5 | 6 | ||
| 6 | import java.io.IOException; | 7 | import java.io.IOException; |
| 7 | import java.util.List; | 8 | import java.util.List; |
| @@ -21,7 +22,7 @@ public interface BusExchangeService { | @@ -21,7 +22,7 @@ public interface BusExchangeService { | ||
| 21 | * @param id primaryKey | 22 | * @param id primaryKey |
| 22 | * @return deleteCount | 23 | * @return deleteCount |
| 23 | */ | 24 | */ |
| 24 | - int deleteByPrimaryKey(String id) throws IOException, TimeoutException; | 25 | + ResultJson deleteByPrimaryKey(String id) throws IOException, TimeoutException; |
| 25 | 26 | ||
| 26 | /** | 27 | /** |
| 27 | * 新增 | 28 | * 新增 |
| @@ -37,7 +38,7 @@ public interface BusExchangeService { | @@ -37,7 +38,7 @@ public interface BusExchangeService { | ||
| 37 | * @param record the record | 38 | * @param record the record |
| 38 | * @return insert count | 39 | * @return insert count |
| 39 | */ | 40 | */ |
| 40 | - int insertSelective(BusExchange record) throws IOException, TimeoutException; | 41 | + ResultJson insertSelective(BusExchange record) throws IOException, TimeoutException; |
| 41 | 42 | ||
| 42 | /** | 43 | /** |
| 43 | * 查询,根据主键 | 44 | * 查询,根据主键 |
| @@ -21,7 +21,7 @@ public interface BusQueueService { | @@ -21,7 +21,7 @@ public interface BusQueueService { | ||
| 21 | * @param id primaryKey | 21 | * @param id primaryKey |
| 22 | * @return deleteCount | 22 | * @return deleteCount |
| 23 | */ | 23 | */ |
| 24 | - int deleteByPrimaryKey(String id) throws IOException, TimeoutException; | 24 | + int deleteByPrimaryKey(String id) throws IOException, TimeoutException, InterruptedException; |
| 25 | 25 | ||
| 26 | /** | 26 | /** |
| 27 | * 删除队列,根据虚拟主机id | 27 | * 删除队列,根据虚拟主机id |
| @@ -112,5 +112,6 @@ public interface BusQueueService { | @@ -112,5 +112,6 @@ public interface BusQueueService { | ||
| 112 | * @return | 112 | * @return |
| 113 | */ | 113 | */ |
| 114 | List<BusQueue> selectByUsername(String username); | 114 | List<BusQueue> selectByUsername(String username); |
| 115 | + | ||
| 115 | } | 116 | } |
| 116 | 117 |
| @@ -82,7 +82,9 @@ public interface UserInfoService { | @@ -82,7 +82,9 @@ public interface UserInfoService { | ||
| 82 | * 修改密码 | 82 | * 修改密码 |
| 83 | * | 83 | * |
| 84 | * @param userInfo {@link UserInfo} | 84 | * @param userInfo {@link UserInfo} |
| 85 | - * @return | 85 | + * @return {@link ResultJson} |
| 86 | + * @throws IOException | ||
| 87 | + * @throws URISyntaxException | ||
| 86 | */ | 88 | */ |
| 87 | ResultJson updatePassword(UserInfo userInfo) throws IOException, URISyntaxException; | 89 | ResultJson updatePassword(UserInfo userInfo) throws IOException, URISyntaxException; |
| 88 | 90 | ||
| @@ -102,7 +104,7 @@ public interface UserInfoService { | @@ -102,7 +104,7 @@ public interface UserInfoService { | ||
| 102 | * @param userInfo {@link UserInfo} | 104 | * @param userInfo {@link UserInfo} |
| 103 | * @return 返回结果 | 105 | * @return 返回结果 |
| 104 | */ | 106 | */ |
| 105 | - ResultJson deleteUserInfo(UserInfo userInfo) throws IOException, URISyntaxException; | 107 | + ResultJson deleteUserInfo(UserInfo userInfo) throws IOException, URISyntaxException, TimeoutException, InterruptedException; |
| 106 | 108 | ||
| 107 | /** | 109 | /** |
| 108 | * 删除用户关系 | 110 | * 删除用户关系 |
| 1 | package com.sunyo.wlpt.message.bus.service.service.impl; | 1 | package com.sunyo.wlpt.message.bus.service.service.impl; |
| 2 | 2 | ||
| 3 | -import com.sunyo.wlpt.message.bus.service.domain.*; | ||
| 4 | -import com.sunyo.wlpt.message.bus.service.rabbit.utils.RabbitUtils; | ||
| 5 | -import com.sunyo.wlpt.message.bus.service.service.*; | ||
| 6 | -import org.springframework.context.annotation.Lazy; | 3 | +import com.sunyo.wlpt.message.bus.service.domain.XmlData; |
| 4 | +import com.sunyo.wlpt.message.bus.service.service.MessageNoteService; | ||
| 7 | import org.springframework.scheduling.annotation.Async; | 5 | import org.springframework.scheduling.annotation.Async; |
| 6 | +import org.springframework.scheduling.annotation.AsyncResult; | ||
| 8 | import org.springframework.stereotype.Service; | 7 | import org.springframework.stereotype.Service; |
| 9 | -import org.springframework.transaction.annotation.Propagation; | ||
| 10 | -import org.springframework.transaction.annotation.Transactional; | ||
| 11 | 8 | ||
| 12 | import javax.annotation.Resource; | 9 | import javax.annotation.Resource; |
| 13 | -import java.io.IOException; | ||
| 14 | -import java.util.List; | ||
| 15 | -import java.util.concurrent.TimeoutException; | 10 | +import java.util.concurrent.CountDownLatch; |
| 11 | +import java.util.concurrent.Future; | ||
| 16 | 12 | ||
| 17 | /** | 13 | /** |
| 18 | * @author 子诚 | 14 | * @author 子诚 |
| @@ -24,167 +20,24 @@ import java.util.concurrent.TimeoutException; | @@ -24,167 +20,24 @@ import java.util.concurrent.TimeoutException; | ||
| 24 | public class AsyncTaskService { | 20 | public class AsyncTaskService { |
| 25 | 21 | ||
| 26 | @Resource | 22 | @Resource |
| 27 | - private RabbitUtils rabbitUtils; | ||
| 28 | - | ||
| 29 | - @Resource | ||
| 30 | private MessageNoteService messageNoteService; | 23 | private MessageNoteService messageNoteService; |
| 31 | 24 | ||
| 32 | - @Lazy | ||
| 33 | - @Resource | ||
| 34 | - private RoutingKeyService routingKeyService; | ||
| 35 | - | ||
| 36 | - @Resource | ||
| 37 | - private UserMessageBindingService userMessageBindingService; | ||
| 38 | - | ||
| 39 | - @Lazy | ||
| 40 | - @Resource | ||
| 41 | - private BusQueueService busQueueService; | ||
| 42 | - | ||
| 43 | - @Lazy | ||
| 44 | - @Resource | ||
| 45 | - private BusExchangeService busExchangeService; | ||
| 46 | - | ||
| 47 | - @Lazy | ||
| 48 | - @Resource | ||
| 49 | - private VirtualHostService virtualHostService; | ||
| 50 | - | ||
| 51 | /** | 25 | /** |
| 52 | * 异步,无论消息是否发送成功,将消息存储于数据库 | 26 | * 异步,无论消息是否发送成功,将消息存储于数据库 |
| 53 | * | 27 | * |
| 54 | * @param sentData {@link XmlData} | 28 | * @param sentData {@link XmlData} |
| 55 | */ | 29 | */ |
| 56 | @Async("taskExecutor") | 30 | @Async("taskExecutor") |
| 57 | - public void saveMessage(XmlData sentData) | 31 | + public Future<String> saveMessage(XmlData sentData, CountDownLatch latch) |
| 58 | { | 32 | { |
| 33 | + try { | ||
| 59 | // 无论消息是否发送成功,将消息存储于数据库 | 34 | // 无论消息是否发送成功,将消息存储于数据库 |
| 60 | messageNoteService.insertMessageSelective(sentData); | 35 | messageNoteService.insertMessageSelective(sentData); |
| 36 | + return new AsyncResult<>("无论消息是否发送成功,将消息存储于数据库与ES中"); | ||
| 37 | + } catch (Exception e) { | ||
| 38 | + return new AsyncResult<>("保存消息于数据库与ES中,失败"); | ||
| 39 | + } finally { | ||
| 40 | + latch.countDown(); | ||
| 61 | } | 41 | } |
| 62 | - | ||
| 63 | - /** | ||
| 64 | - * 当删除服务器的时候,级联删除与服务器有关的 | ||
| 65 | - * 虚拟主机,交换机,路由键,队列,绑定关系 | ||
| 66 | - */ | ||
| 67 | - @Async("taskExecutor") | ||
| 68 | - @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) | ||
| 69 | - public void serverCascadeDelete(BusServer busServer) throws IOException, TimeoutException | ||
| 70 | - { | ||
| 71 | - String serverId = busServer.getId(); | ||
| 72 | - List<UserMessageBinding> bindings = userMessageBindingService.selectByServerId(serverId); | ||
| 73 | - // 1.1 删除数据库中的绑定关系 | ||
| 74 | - userMessageBindingService.deleteByServerId(serverId); | ||
| 75 | - for (UserMessageBinding userMessageBinding : bindings) { | ||
| 76 | - // 1.2、解除MQ服务器上的绑定关系 | ||
| 77 | - rabbitUtils.toRemoveBinding(userMessageBinding); | ||
| 78 | - } | ||
| 79 | - List<VirtualHost> virtualHostList = virtualHostService.selectByServerId(serverId); | ||
| 80 | - // 2.1、删除数据库中的虚拟主机列表 | ||
| 81 | - virtualHostService.deleteByServerId(serverId); | ||
| 82 | - for (VirtualHost virtualHost : virtualHostList) { | ||
| 83 | - String virtualHostId = virtualHost.getId(); | ||
| 84 | - List<BusQueue> queues = busQueueService.selectByVirtualHostId(virtualHostId); | ||
| 85 | - // 3.1、删除数据库中对应的队列 | ||
| 86 | - busQueueService.deleteByVirtualHostId(virtualHostId); | ||
| 87 | - for (BusQueue queue : queues) { | ||
| 88 | - // 3.2、删除MQ服务器上的队列 | ||
| 89 | - rabbitUtils.toRemoveQueue(queue); | ||
| 90 | - } | ||
| 91 | - List<BusExchange> exchanges = busExchangeService.selectByVirtualHostId(virtualHostId); | ||
| 92 | - // 4.1 根据虚拟主机id,删除交换机 | ||
| 93 | - busExchangeService.deleteByVirtualHostId(virtualHostId); | ||
| 94 | - for (BusExchange busExchange : exchanges) { | ||
| 95 | - String exchangeId = busExchange.getId(); | ||
| 96 | - // 5.1、删除数据库中对应的路由键 | ||
| 97 | - routingKeyService.deleteByExchangeId(exchangeId); | ||
| 98 | - // 4.2 在MQ服务器上删除该交换机 | ||
| 99 | - rabbitUtils.toRemoveExchange(busExchange); | ||
| 100 | - } | ||
| 101 | - } | ||
| 102 | - } | ||
| 103 | - | ||
| 104 | - /** | ||
| 105 | - * 当删除虚拟主机的时候,级联删除与虚拟主机有关的 | ||
| 106 | - * 交换机,路由键,队列,绑定关系 | ||
| 107 | - */ | ||
| 108 | - @Async("taskExecutor") | ||
| 109 | - @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) | ||
| 110 | - public void virtualHostCascadeDelete(VirtualHost virtualHost) throws IOException, TimeoutException | ||
| 111 | - { | ||
| 112 | - String virtualHostId = virtualHost.getId(); | ||
| 113 | - List<UserMessageBinding> bindings = userMessageBindingService.selectByVirtualHostId(virtualHostId); | ||
| 114 | - // 1.1、删除数据库中的绑定关系 | ||
| 115 | - userMessageBindingService.deleteByVirtualHostId(virtualHostId); | ||
| 116 | - for (UserMessageBinding userMessageBinding : bindings) { | ||
| 117 | - // 1.2、解除MQ服务器上的绑定关系 | ||
| 118 | - rabbitUtils.toRemoveBinding(userMessageBinding); | ||
| 119 | - } | ||
| 120 | - List<BusQueue> queues = busQueueService.selectByVirtualHostId(virtualHostId); | ||
| 121 | - // 2.1、删除数据库中对应的队列 | ||
| 122 | - busQueueService.deleteByVirtualHostId(virtualHostId); | ||
| 123 | - for (BusQueue queue : queues) { | ||
| 124 | - // 2.2、删除MQ服务器上的队列 | ||
| 125 | - rabbitUtils.toRemoveQueue(queue); | ||
| 126 | - } | ||
| 127 | - List<BusExchange> exchanges = busExchangeService.selectByVirtualHostId(virtualHostId); | ||
| 128 | - // 3.1 根据虚拟主机id,删除交换机 | ||
| 129 | - busExchangeService.deleteByVirtualHostId(virtualHostId); | ||
| 130 | - for (BusExchange busExchange : exchanges) { | ||
| 131 | - String exchangeId = busExchange.getId(); | ||
| 132 | - // 4.1、删除数据库中对应的路由键 | ||
| 133 | - routingKeyService.deleteByExchangeId(exchangeId); | ||
| 134 | - // 3.2 在MQ服务器上删除该交换机 | ||
| 135 | - rabbitUtils.toRemoveExchange(busExchange); | ||
| 136 | - } | ||
| 137 | - } | ||
| 138 | - | ||
| 139 | - /** | ||
| 140 | - * 当删除交换机的时候, | ||
| 141 | - * <p> | ||
| 142 | - * 同时,删除对应的路由键,删除包含交换机的绑定关系 | ||
| 143 | - * <p> | ||
| 144 | - * 同时,删除包含该路由键的绑定关系 | ||
| 145 | - */ | ||
| 146 | - @Async("taskExecutor") | ||
| 147 | - @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) | ||
| 148 | - public void exchangeCascadeDelete(BusExchange busExchange) | ||
| 149 | - { | ||
| 150 | - String exchangeId = busExchange.getId(); | ||
| 151 | - List<RoutingKey> routingKeyList = routingKeyService.selectByExchangeId(exchangeId); | ||
| 152 | - // 删除相关路由键 | ||
| 153 | - routingKeyService.deleteByExchangeId(exchangeId); | ||
| 154 | - // 删除交换机相关绑定关系 | ||
| 155 | - userMessageBindingService.deleteByExchangeId(exchangeId); | ||
| 156 | - // 删除路由键相关绑定关系 | ||
| 157 | - for (int i = 0; i < routingKeyList.size(); i++) { | ||
| 158 | - userMessageBindingService.deleteByRoutingKeyId(routingKeyList.get(0).getId()); | ||
| 159 | - } | ||
| 160 | - } | ||
| 161 | - | ||
| 162 | - /** | ||
| 163 | - * 当删除路由键的时候,删除包含该路由键的绑定关系 | ||
| 164 | - */ | ||
| 165 | - @Async("taskExecutor") | ||
| 166 | - public void routingKeyCascadeDelete(RoutingKey routingKey) throws IOException, TimeoutException | ||
| 167 | - { | ||
| 168 | - String routingKeyId = routingKey.getId(); | ||
| 169 | - // 根据路由键id查询出所有的包含该路由键的绑定关系 | ||
| 170 | - List<UserMessageBinding> bindings = userMessageBindingService.selectByRoutingKeyId(routingKeyId); | ||
| 171 | - for (UserMessageBinding userMessageBinding : bindings) { | ||
| 172 | - // 解除MQ服务器上的绑定关系 | ||
| 173 | - rabbitUtils.toRemoveBinding(userMessageBinding); | ||
| 174 | - } | ||
| 175 | - // 删除数据库中的包含该路由键相关绑定关系 | ||
| 176 | - userMessageBindingService.deleteByRoutingKeyId(routingKey.getId()); | ||
| 177 | } | 42 | } |
| 178 | - | ||
| 179 | - /** | ||
| 180 | - * 当删除队列的时候,删除包含队列的绑定关系 | ||
| 181 | - */ | ||
| 182 | - @Async("taskExecutor") | ||
| 183 | - public void queueCascadeDelete(BusQueue busQueue) | ||
| 184 | - { | ||
| 185 | - // 删除相关绑定关系 | ||
| 186 | - userMessageBindingService.deleteByQueueId(busQueue.getId()); | ||
| 187 | - } | ||
| 188 | - | ||
| 189 | - | ||
| 190 | } | 43 | } |
| @@ -3,9 +3,13 @@ package com.sunyo.wlpt.message.bus.service.service.impl; | @@ -3,9 +3,13 @@ package com.sunyo.wlpt.message.bus.service.service.impl; | ||
| 3 | import com.github.pagehelper.PageHelper; | 3 | import com.github.pagehelper.PageHelper; |
| 4 | import com.github.pagehelper.PageInfo; | 4 | import com.github.pagehelper.PageInfo; |
| 5 | import com.sunyo.wlpt.message.bus.service.domain.BusExchange; | 5 | import com.sunyo.wlpt.message.bus.service.domain.BusExchange; |
| 6 | +import com.sunyo.wlpt.message.bus.service.domain.RoutingKey; | ||
| 6 | import com.sunyo.wlpt.message.bus.service.mapper.BusExchangeMapper; | 7 | import com.sunyo.wlpt.message.bus.service.mapper.BusExchangeMapper; |
| 7 | import com.sunyo.wlpt.message.bus.service.rabbit.utils.RabbitUtils; | 8 | import com.sunyo.wlpt.message.bus.service.rabbit.utils.RabbitUtils; |
| 9 | +import com.sunyo.wlpt.message.bus.service.response.ResultJson; | ||
| 8 | import com.sunyo.wlpt.message.bus.service.service.BusExchangeService; | 10 | import com.sunyo.wlpt.message.bus.service.service.BusExchangeService; |
| 11 | +import com.sunyo.wlpt.message.bus.service.service.RoutingKeyService; | ||
| 12 | +import com.sunyo.wlpt.message.bus.service.service.UserMessageBindingService; | ||
| 9 | import org.springframework.context.annotation.Lazy; | 13 | import org.springframework.context.annotation.Lazy; |
| 10 | import org.springframework.stereotype.Service; | 14 | import org.springframework.stereotype.Service; |
| 11 | import org.springframework.transaction.annotation.Propagation; | 15 | import org.springframework.transaction.annotation.Propagation; |
| @@ -16,6 +20,8 @@ import java.io.IOException; | @@ -16,6 +20,8 @@ import java.io.IOException; | ||
| 16 | import java.util.List; | 20 | import java.util.List; |
| 17 | import java.util.concurrent.TimeoutException; | 21 | import java.util.concurrent.TimeoutException; |
| 18 | 22 | ||
| 23 | +import static com.sunyo.wlpt.message.bus.service.common.Constant.RESULT_SUCCESS; | ||
| 24 | + | ||
| 19 | /** | 25 | /** |
| 20 | * @author 子诚 | 26 | * @author 子诚 |
| 21 | * Description: | 27 | * Description: |
| @@ -32,53 +38,79 @@ public class BusExchangeServiceImpl implements BusExchangeService { | @@ -32,53 +38,79 @@ public class BusExchangeServiceImpl implements BusExchangeService { | ||
| 32 | private AsyncTaskService asyncTaskService; | 38 | private AsyncTaskService asyncTaskService; |
| 33 | 39 | ||
| 34 | @Resource | 40 | @Resource |
| 41 | + private RoutingKeyService routingKeyService; | ||
| 42 | + | ||
| 43 | + @Resource | ||
| 44 | + private UserMessageBindingService userMessageBindingService; | ||
| 45 | + | ||
| 46 | + @Resource | ||
| 35 | RabbitUtils rabbitUtils; | 47 | RabbitUtils rabbitUtils; |
| 36 | 48 | ||
| 37 | @Override | 49 | @Override |
| 38 | @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) | 50 | @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) |
| 39 | - public int deleteByPrimaryKey(String id) throws IOException, TimeoutException | 51 | + public ResultJson deleteByPrimaryKey(String id) throws IOException, TimeoutException |
| 40 | { | 52 | { |
| 41 | - // 判断删除的个数,需被删除的个数是否一致 | ||
| 42 | int index = 0; | 53 | int index = 0; |
| 43 | String splitItem = ","; | 54 | String splitItem = ","; |
| 44 | - //如果id,传过来多个,以','分割,即批量删除 | ||
| 45 | if (id.contains(splitItem)) { | 55 | if (id.contains(splitItem)) { |
| 46 | String[] split = id.split(splitItem); | 56 | String[] split = id.split(splitItem); |
| 47 | for (int i = 0; i < split.length; i++) { | 57 | for (int i = 0; i < split.length; i++) { |
| 48 | BusExchange busExchange = selectByPrimaryKey(split[i]); | 58 | BusExchange busExchange = selectByPrimaryKey(split[i]); |
| 49 | - // 删除数据库的交换机记录 | ||
| 50 | int num = busExchangeMapper.deleteByPrimaryKey(split[i]); | 59 | int num = busExchangeMapper.deleteByPrimaryKey(split[i]); |
| 51 | - // 删除MQ服务器上的交换机 | ||
| 52 | - deleteExchange(busExchange); | ||
| 53 | - // 级联删除与交换机相关的路由键,配置关系 | ||
| 54 | - asyncTaskService.exchangeCascadeDelete(busExchange); | 60 | + |
| 61 | + ResultJson resultJson = deleteExchange(busExchange); | ||
| 62 | + if (!RESULT_SUCCESS.equals(resultJson.getCode())) { | ||
| 63 | + return resultJson; | ||
| 64 | + } | ||
| 65 | + exchangeCascadeDelete(busExchange); | ||
| 55 | if (num > 0) { | 66 | if (num > 0) { |
| 56 | index = index + num; | 67 | index = index + num; |
| 57 | } | 68 | } |
| 58 | } | 69 | } |
| 59 | - if (index == split.length) { | ||
| 60 | - return 1; | ||
| 61 | - } else { | ||
| 62 | - return 0; | ||
| 63 | - } | 70 | + return index == split.length |
| 71 | + ? new ResultJson<>("200", "删除MQ交换机,成功") | ||
| 72 | + : new ResultJson<>("500", "删除MQ交换机,失败"); | ||
| 64 | } else { | 73 | } else { |
| 65 | BusExchange busExchange = selectByPrimaryKey(id); | 74 | BusExchange busExchange = selectByPrimaryKey(id); |
| 66 | - // 删除数据库的交换机记录 | ||
| 67 | int num = busExchangeMapper.deleteByPrimaryKey(id); | 75 | int num = busExchangeMapper.deleteByPrimaryKey(id); |
| 68 | - // 删除MQ服务器上的交换机 | ||
| 69 | - deleteExchange(busExchange); | ||
| 70 | - // 级联删除与交换机相关的路由键,配置关系 | ||
| 71 | - asyncTaskService.exchangeCascadeDelete(busExchange); | ||
| 72 | - return num; | 76 | + ResultJson resultJson = deleteExchange(busExchange); |
| 77 | + if (!RESULT_SUCCESS.equals(resultJson.getCode())) { | ||
| 78 | + return resultJson; | ||
| 79 | + } | ||
| 80 | + exchangeCascadeDelete(busExchange); | ||
| 81 | + return num > 0 | ||
| 82 | + ? new ResultJson<>("200", "删除MQ交换机,成功") | ||
| 83 | + : new ResultJson<>("500", "删除MQ交换机,失败"); | ||
| 73 | } | 84 | } |
| 74 | } | 85 | } |
| 75 | 86 | ||
| 76 | /** | 87 | /** |
| 77 | * 删除MQ服务器上的交换机 | 88 | * 删除MQ服务器上的交换机 |
| 78 | */ | 89 | */ |
| 79 | - public void deleteExchange(BusExchange busExchange) throws IOException, TimeoutException | 90 | + public ResultJson deleteExchange(BusExchange busExchange) throws IOException, TimeoutException |
| 80 | { | 91 | { |
| 81 | - rabbitUtils.toRemoveExchange(busExchange); | 92 | + return rabbitUtils.toRemoveExchange(busExchange); |
| 93 | + } | ||
| 94 | + | ||
| 95 | + /** | ||
| 96 | + * 删除交换机时的级联删除 | ||
| 97 | + * <p> | ||
| 98 | + * 数据库:删除该交换机的绑定关系 | ||
| 99 | + * <p> | ||
| 100 | + * 数据库:删除该交换机下的路由键,以及该路由键的绑定关系 | ||
| 101 | + * | ||
| 102 | + * @param busExchange {@link BusExchange} | ||
| 103 | + */ | ||
| 104 | + public void exchangeCascadeDelete(BusExchange busExchange) | ||
| 105 | + { | ||
| 106 | + String exchangeId = busExchange.getId(); | ||
| 107 | + | ||
| 108 | + List<RoutingKey> routingKeyList = routingKeyService.selectByExchangeId(exchangeId); | ||
| 109 | + routingKeyService.deleteByExchangeId(exchangeId); | ||
| 110 | + userMessageBindingService.deleteByExchangeId(exchangeId); | ||
| 111 | + for (RoutingKey routingKey : routingKeyList) { | ||
| 112 | + userMessageBindingService.deleteByRoutingKeyId(routingKey.getId()); | ||
| 113 | + } | ||
| 82 | } | 114 | } |
| 83 | 115 | ||
| 84 | @Override | 116 | @Override |
| @@ -88,10 +120,15 @@ public class BusExchangeServiceImpl implements BusExchangeService { | @@ -88,10 +120,15 @@ public class BusExchangeServiceImpl implements BusExchangeService { | ||
| 88 | } | 120 | } |
| 89 | 121 | ||
| 90 | @Override | 122 | @Override |
| 91 | - public int insertSelective(BusExchange record) throws IOException, TimeoutException | 123 | + public ResultJson insertSelective(BusExchange record) throws IOException, TimeoutException |
| 92 | { | 124 | { |
| 93 | - rabbitUtils.toCreateExchange(record); | ||
| 94 | - return busExchangeMapper.insertSelective(record); | 125 | + ResultJson resultJson = rabbitUtils.toCreateExchange(record); |
| 126 | + if (!RESULT_SUCCESS.equals(resultJson.getCode())) { | ||
| 127 | + return resultJson; | ||
| 128 | + } | ||
| 129 | + return busExchangeMapper.insertSelective(record) > 0 | ||
| 130 | + ? new ResultJson<>("200", "新增MQ交换机信息,成功") | ||
| 131 | + : new ResultJson<>("500", "新增MQ交换机信息,失败"); | ||
| 95 | } | 132 | } |
| 96 | 133 | ||
| 97 | @Override | 134 | @Override |
| @@ -5,12 +5,12 @@ import com.github.pagehelper.PageInfo; | @@ -5,12 +5,12 @@ import com.github.pagehelper.PageInfo; | ||
| 5 | import com.sunyo.wlpt.message.bus.service.domain.BusQueue; | 5 | import com.sunyo.wlpt.message.bus.service.domain.BusQueue; |
| 6 | import com.sunyo.wlpt.message.bus.service.mapper.BusQueueMapper; | 6 | import com.sunyo.wlpt.message.bus.service.mapper.BusQueueMapper; |
| 7 | import com.sunyo.wlpt.message.bus.service.mapper.UserInfoMapper; | 7 | import com.sunyo.wlpt.message.bus.service.mapper.UserInfoMapper; |
| 8 | +import com.sunyo.wlpt.message.bus.service.mapper.UserMessageBindingMapper; | ||
| 8 | import com.sunyo.wlpt.message.bus.service.rabbit.utils.RabbitUtils; | 9 | import com.sunyo.wlpt.message.bus.service.rabbit.utils.RabbitUtils; |
| 9 | import com.sunyo.wlpt.message.bus.service.response.ResultJson; | 10 | import com.sunyo.wlpt.message.bus.service.response.ResultJson; |
| 10 | import com.sunyo.wlpt.message.bus.service.service.BusQueueService; | 11 | import com.sunyo.wlpt.message.bus.service.service.BusQueueService; |
| 11 | import com.sunyo.wlpt.message.bus.service.utils.IdUtils; | 12 | import com.sunyo.wlpt.message.bus.service.utils.IdUtils; |
| 12 | import io.netty.util.internal.StringUtil; | 13 | import io.netty.util.internal.StringUtil; |
| 13 | -import org.springframework.context.annotation.Lazy; | ||
| 14 | import org.springframework.stereotype.Service; | 14 | import org.springframework.stereotype.Service; |
| 15 | import org.springframework.transaction.annotation.Propagation; | 15 | import org.springframework.transaction.annotation.Propagation; |
| 16 | import org.springframework.transaction.annotation.Transactional; | 16 | import org.springframework.transaction.annotation.Transactional; |
| @@ -38,13 +38,14 @@ public class BusQueueServiceImpl implements BusQueueService { | @@ -38,13 +38,14 @@ public class BusQueueServiceImpl implements BusQueueService { | ||
| 38 | @Resource | 38 | @Resource |
| 39 | private UserInfoMapper userInfoMapper; | 39 | private UserInfoMapper userInfoMapper; |
| 40 | 40 | ||
| 41 | - @Lazy | 41 | + |
| 42 | @Resource | 42 | @Resource |
| 43 | - private AsyncTaskService asyncTaskService; | 43 | + private UserMessageBindingMapper userMessageBindingMapper; |
| 44 | + | ||
| 44 | 45 | ||
| 45 | @Override | 46 | @Override |
| 46 | @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) | 47 | @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) |
| 47 | - public int deleteByPrimaryKey(String id) throws IOException, TimeoutException | 48 | + public int deleteByPrimaryKey(String id) throws IOException, TimeoutException, InterruptedException |
| 48 | { | 49 | { |
| 49 | // 判断删除的个数,需被删除的个数是否一致 | 50 | // 判断删除的个数,需被删除的个数是否一致 |
| 50 | int index = 0; | 51 | int index = 0; |
| @@ -59,7 +60,7 @@ public class BusQueueServiceImpl implements BusQueueService { | @@ -59,7 +60,7 @@ public class BusQueueServiceImpl implements BusQueueService { | ||
| 59 | // 删除MQ服务器上的队列 | 60 | // 删除MQ服务器上的队列 |
| 60 | deleteQueue(busQueue); | 61 | deleteQueue(busQueue); |
| 61 | // 级联删除数据库中与队列有关的配置关系 | 62 | // 级联删除数据库中与队列有关的配置关系 |
| 62 | - asyncTaskService.queueCascadeDelete(busQueue); | 63 | + queueCascadeDelete(busQueue); |
| 63 | if (num > 0) { | 64 | if (num > 0) { |
| 64 | index = index + num; | 65 | index = index + num; |
| 65 | } | 66 | } |
| @@ -76,7 +77,7 @@ public class BusQueueServiceImpl implements BusQueueService { | @@ -76,7 +77,7 @@ public class BusQueueServiceImpl implements BusQueueService { | ||
| 76 | // 删除MQ服务器上的队列 | 77 | // 删除MQ服务器上的队列 |
| 77 | deleteQueue(busQueue); | 78 | deleteQueue(busQueue); |
| 78 | // 级联删除数据库中与队列有关的配置关系 | 79 | // 级联删除数据库中与队列有关的配置关系 |
| 79 | - asyncTaskService.queueCascadeDelete(busQueue); | 80 | + queueCascadeDelete(busQueue); |
| 80 | return num; | 81 | return num; |
| 81 | } | 82 | } |
| 82 | } | 83 | } |
| @@ -89,6 +90,16 @@ public class BusQueueServiceImpl implements BusQueueService { | @@ -89,6 +90,16 @@ public class BusQueueServiceImpl implements BusQueueService { | ||
| 89 | rabbitUtils.toRemoveQueue(busQueue); | 90 | rabbitUtils.toRemoveQueue(busQueue); |
| 90 | } | 91 | } |
| 91 | 92 | ||
| 93 | + /** | ||
| 94 | + * 删除队列时的级联删除 | ||
| 95 | + * | ||
| 96 | + * @param busQueue {@link BusQueue} | ||
| 97 | + */ | ||
| 98 | + public void queueCascadeDelete(BusQueue busQueue) | ||
| 99 | + { | ||
| 100 | + int num = userMessageBindingMapper.deleteByQueueId(busQueue.getId()); | ||
| 101 | + } | ||
| 102 | + | ||
| 92 | @Override | 103 | @Override |
| 93 | public int deleteByVirtualHostId(String virtualHostId) | 104 | public int deleteByVirtualHostId(String virtualHostId) |
| 94 | { | 105 | { |
| @@ -3,9 +3,11 @@ package com.sunyo.wlpt.message.bus.service.service.impl; | @@ -3,9 +3,11 @@ package com.sunyo.wlpt.message.bus.service.service.impl; | ||
| 3 | import com.github.pagehelper.PageHelper; | 3 | import com.github.pagehelper.PageHelper; |
| 4 | import com.github.pagehelper.PageInfo; | 4 | import com.github.pagehelper.PageInfo; |
| 5 | import com.sunyo.wlpt.message.bus.service.domain.RoutingKey; | 5 | import com.sunyo.wlpt.message.bus.service.domain.RoutingKey; |
| 6 | +import com.sunyo.wlpt.message.bus.service.domain.UserMessageBinding; | ||
| 6 | import com.sunyo.wlpt.message.bus.service.mapper.RoutingKeyMapper; | 7 | import com.sunyo.wlpt.message.bus.service.mapper.RoutingKeyMapper; |
| 8 | +import com.sunyo.wlpt.message.bus.service.mapper.UserMessageBindingMapper; | ||
| 9 | +import com.sunyo.wlpt.message.bus.service.rabbit.utils.RabbitUtils; | ||
| 7 | import com.sunyo.wlpt.message.bus.service.service.RoutingKeyService; | 10 | import com.sunyo.wlpt.message.bus.service.service.RoutingKeyService; |
| 8 | -import org.springframework.context.annotation.Lazy; | ||
| 9 | import org.springframework.stereotype.Service; | 11 | import org.springframework.stereotype.Service; |
| 10 | import org.springframework.transaction.annotation.Propagation; | 12 | import org.springframework.transaction.annotation.Propagation; |
| 11 | import org.springframework.transaction.annotation.Transactional; | 13 | import org.springframework.transaction.annotation.Transactional; |
| @@ -24,9 +26,11 @@ import java.util.concurrent.TimeoutException; | @@ -24,9 +26,11 @@ import java.util.concurrent.TimeoutException; | ||
| 24 | @Service | 26 | @Service |
| 25 | public class RoutingKeyServiceImpl implements RoutingKeyService { | 27 | public class RoutingKeyServiceImpl implements RoutingKeyService { |
| 26 | 28 | ||
| 27 | - @Lazy | ||
| 28 | @Resource | 29 | @Resource |
| 29 | - private AsyncTaskService asyncTaskService; | 30 | + private RabbitUtils rabbitUtils; |
| 31 | + | ||
| 32 | + @Resource | ||
| 33 | + private UserMessageBindingMapper userMessageBindingMapper; | ||
| 30 | 34 | ||
| 31 | @Resource | 35 | @Resource |
| 32 | private RoutingKeyMapper routingKeyMapper; | 36 | private RoutingKeyMapper routingKeyMapper; |
| @@ -43,8 +47,8 @@ public class RoutingKeyServiceImpl implements RoutingKeyService { | @@ -43,8 +47,8 @@ public class RoutingKeyServiceImpl implements RoutingKeyService { | ||
| 43 | String[] split = id.split(splitItem); | 47 | String[] split = id.split(splitItem); |
| 44 | for (int i = 0; i < split.length; i++) { | 48 | for (int i = 0; i < split.length; i++) { |
| 45 | RoutingKey routingKey = routingKeyMapper.selectByPrimaryKey(split[i]); | 49 | RoutingKey routingKey = routingKeyMapper.selectByPrimaryKey(split[i]); |
| 46 | - // 异步,级联删除包含该路由键的配置关系 | ||
| 47 | - asyncTaskService.routingKeyCascadeDelete(routingKey); | 50 | + // 级联删除包含该路由键的配置关系 |
| 51 | + routingKeyCascadeDelete(routingKey); | ||
| 48 | int num = routingKeyMapper.deleteByPrimaryKey(split[i]); | 52 | int num = routingKeyMapper.deleteByPrimaryKey(split[i]); |
| 49 | if (num > 0) { | 53 | if (num > 0) { |
| 50 | index = index + num; | 54 | index = index + num; |
| @@ -57,12 +61,33 @@ public class RoutingKeyServiceImpl implements RoutingKeyService { | @@ -57,12 +61,33 @@ public class RoutingKeyServiceImpl implements RoutingKeyService { | ||
| 57 | } | 61 | } |
| 58 | } else { | 62 | } else { |
| 59 | RoutingKey routingKey = routingKeyMapper.selectByPrimaryKey(id); | 63 | RoutingKey routingKey = routingKeyMapper.selectByPrimaryKey(id); |
| 60 | - // 异步,级联删除包含该路由键的配置关系 | ||
| 61 | - asyncTaskService.routingKeyCascadeDelete(routingKey); | 64 | + // 级联删除包含该路由键的配置关系 |
| 65 | + routingKeyCascadeDelete(routingKey); | ||
| 62 | return routingKeyMapper.deleteByPrimaryKey(id); | 66 | return routingKeyMapper.deleteByPrimaryKey(id); |
| 63 | } | 67 | } |
| 64 | } | 68 | } |
| 65 | 69 | ||
| 70 | + | ||
| 71 | + /** | ||
| 72 | + * 删除路由键时的级联删除 | ||
| 73 | + * | ||
| 74 | + * @param routingKey {@link RoutingKey} | ||
| 75 | + * @throws IOException | ||
| 76 | + * @throws TimeoutException | ||
| 77 | + */ | ||
| 78 | + public void routingKeyCascadeDelete(RoutingKey routingKey) throws IOException, TimeoutException | ||
| 79 | + { | ||
| 80 | + String routingKeyId = routingKey.getId(); | ||
| 81 | + // 根据路由键id查询出所有的包含该路由键的绑定关系 | ||
| 82 | + List<UserMessageBinding> bindings = userMessageBindingMapper.selectByRoutingKeyId(routingKeyId); | ||
| 83 | + for (UserMessageBinding userMessageBinding : bindings) { | ||
| 84 | + // 解除MQ服务器上的绑定关系 | ||
| 85 | + rabbitUtils.toRemoveBinding(userMessageBinding); | ||
| 86 | + } | ||
| 87 | + // 删除数据库中的包含该路由键相关绑定关系 | ||
| 88 | + userMessageBindingMapper.deleteByRoutingKeyId(routingKey.getId()); | ||
| 89 | + } | ||
| 90 | + | ||
| 66 | @Override | 91 | @Override |
| 67 | public int deleteByExchangeId(String exchangeId) | 92 | public int deleteByExchangeId(String exchangeId) |
| 68 | { | 93 | { |
| @@ -6,6 +6,7 @@ import com.sunyo.wlpt.message.bus.service.domain.BusQueue; | @@ -6,6 +6,7 @@ import com.sunyo.wlpt.message.bus.service.domain.BusQueue; | ||
| 6 | import com.sunyo.wlpt.message.bus.service.domain.BusServer; | 6 | import com.sunyo.wlpt.message.bus.service.domain.BusServer; |
| 7 | import com.sunyo.wlpt.message.bus.service.domain.UserInfo; | 7 | import com.sunyo.wlpt.message.bus.service.domain.UserInfo; |
| 8 | import com.sunyo.wlpt.message.bus.service.domain.VirtualHost; | 8 | import com.sunyo.wlpt.message.bus.service.domain.VirtualHost; |
| 9 | +import com.sunyo.wlpt.message.bus.service.mapper.BusQueueMapper; | ||
| 9 | import com.sunyo.wlpt.message.bus.service.mapper.UserInfoMapper; | 10 | import com.sunyo.wlpt.message.bus.service.mapper.UserInfoMapper; |
| 10 | import com.sunyo.wlpt.message.bus.service.rabbit.utils.ClientUtils; | 11 | import com.sunyo.wlpt.message.bus.service.rabbit.utils.ClientUtils; |
| 11 | import com.sunyo.wlpt.message.bus.service.rabbit.utils.RabbitUtils; | 12 | import com.sunyo.wlpt.message.bus.service.rabbit.utils.RabbitUtils; |
| @@ -42,6 +43,9 @@ public class UserInfoServiceImpl implements UserInfoService { | @@ -42,6 +43,9 @@ public class UserInfoServiceImpl implements UserInfoService { | ||
| 42 | private UserInfoMapper userInfoMapper; | 43 | private UserInfoMapper userInfoMapper; |
| 43 | 44 | ||
| 44 | @Resource | 45 | @Resource |
| 46 | + private BusQueueMapper busQueueMapper; | ||
| 47 | + | ||
| 48 | + @Resource | ||
| 45 | private RabbitProperties rabbitProperties; | 49 | private RabbitProperties rabbitProperties; |
| 46 | 50 | ||
| 47 | @Resource | 51 | @Resource |
| @@ -253,15 +257,20 @@ public class UserInfoServiceImpl implements UserInfoService { | @@ -253,15 +257,20 @@ public class UserInfoServiceImpl implements UserInfoService { | ||
| 253 | @Override | 257 | @Override |
| 254 | public ResultJson updatePassword(UserInfo userInfo) throws IOException, URISyntaxException | 258 | public ResultJson updatePassword(UserInfo userInfo) throws IOException, URISyntaxException |
| 255 | { | 259 | { |
| 256 | - if (StringUtil.isNullOrEmpty(userInfo.getUsername()) || StringUtil.isNullOrEmpty(userInfo.getPassword())) { | 260 | + String username = userInfo.getUsername(); |
| 261 | + String newPassword = userInfo.getPassword(); | ||
| 262 | + if (StringUtil.isNullOrEmpty(username) || StringUtil.isNullOrEmpty(newPassword)) { | ||
| 257 | return new ResultJson<>("400", "用户名和密码,不能为空"); | 263 | return new ResultJson<>("400", "用户名和密码,不能为空"); |
| 258 | } | 264 | } |
| 259 | - if (userInfoMapper.selectUserExist(userInfo.getUsername()).size() == 0) { | 265 | + if (userInfoMapper.selectUserExist(username).size() == 0) { |
| 260 | return new ResultJson<>("400", "该用户不存在"); | 266 | return new ResultJson<>("400", "该用户不存在"); |
| 261 | } | 267 | } |
| 262 | - BusServer busServer = busServerService.selectByPrimaryKey(userInfo.getServerId()); | ||
| 263 | - String newPassword = userInfo.getPassword(); | 268 | + |
| 269 | + List<UserInfo> userInfoList = userInfoMapper.selectUserInfoList(userInfo); | ||
| 270 | + for (UserInfo user : userInfoList) { | ||
| 271 | + BusServer busServer = busServerService.selectByPrimaryKey(user.getServerId()); | ||
| 264 | ClientUtils.updatePassword(busServer, userInfo.getUsername(), newPassword); | 272 | ClientUtils.updatePassword(busServer, userInfo.getUsername(), newPassword); |
| 273 | + } | ||
| 265 | return new ResultJson<>("200", "修改密码成功"); | 274 | return new ResultJson<>("200", "修改密码成功"); |
| 266 | } | 275 | } |
| 267 | 276 | ||
| @@ -277,34 +286,51 @@ public class UserInfoServiceImpl implements UserInfoService { | @@ -277,34 +286,51 @@ public class UserInfoServiceImpl implements UserInfoService { | ||
| 277 | } | 286 | } |
| 278 | 287 | ||
| 279 | /** | 288 | /** |
| 280 | - * 删除根据用户名删除该用户的所有关系 | 289 | + * 删除根据用户名删除该用户的所有关系(只删除当前MQ服务器的该用户) |
| 281 | * <p> | 290 | * <p> |
| 282 | * QM服务器上删除该用户(会自动删除该用户关系) | 291 | * QM服务器上删除该用户(会自动删除该用户关系) |
| 283 | * <p> | 292 | * <p> |
| 284 | - * MQ服务器(以及数据库)删除该用户对应队列(日后需要时,打开注释,即可) | 293 | + * MQ服务器(以及数据库)删除该用户对应队列 |
| 285 | */ | 294 | */ |
| 286 | @Override | 295 | @Override |
| 287 | - public ResultJson deleteUserInfo(UserInfo userInfo) throws IOException, URISyntaxException | 296 | + @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) |
| 297 | + public ResultJson deleteUserInfo(UserInfo userInfo) throws IOException, URISyntaxException, TimeoutException, InterruptedException | ||
| 288 | { | 298 | { |
| 289 | String username = userInfo.getUsername(); | 299 | String username = userInfo.getUsername(); |
| 290 | - List<UserInfo> userInfoList = userInfoMapper.selectByUsername(userInfo.getUsername()); | ||
| 291 | - int num = userInfoMapper.deleteByUsername(username); | 300 | + String serverName = userInfo.getServerName(); |
| 301 | + String virtualHostId = userInfo.getVirtualHostId(); | ||
| 302 | + String splitItem = ","; | ||
| 303 | + | ||
| 304 | + List<UserInfo> userInfoList = userInfoMapper.selectByUsernameAndServerName(username, serverName); | ||
| 305 | + int num = userInfoMapper.deleteByUsernameAndServerName(username, serverName); | ||
| 292 | for (UserInfo item : userInfoList) { | 306 | for (UserInfo item : userInfoList) { |
| 293 | BusServer busServer = busServerService.selectByPrimaryKey(item.getServerId()); | 307 | BusServer busServer = busServerService.selectByPrimaryKey(item.getServerId()); |
| 294 | ClientUtils.deleteMQUser(username, busServer); | 308 | ClientUtils.deleteMQUser(username, busServer); |
| 295 | } | 309 | } |
| 296 | 310 | ||
| 297 | - | ||
| 298 | -// List<BusQueue> queueList = busQueueService.selectByUsername(username); | ||
| 299 | -// for (BusQueue queue : queueList) { | ||
| 300 | -// busQueueService.deleteByPrimaryKey(queue.getId()); | ||
| 301 | -// } | ||
| 302 | - | 311 | + /** |
| 312 | + * TODO: 删除该用户对应的队列 | ||
| 313 | + */ | ||
| 314 | + if (virtualHostId.contains(splitItem)) { | ||
| 315 | + String[] splitHostId = virtualHostId.split(splitItem); | ||
| 316 | + for (int i = 0; i < splitHostId.length; i++) { | ||
| 317 | + List<BusQueue> queueList = busQueueMapper.selectByUsernameAndHostId(username, splitHostId[i]); | ||
| 318 | + for (BusQueue queue : queueList) { | ||
| 319 | + busQueueService.deleteByPrimaryKey(queue.getId()); | ||
| 320 | + } | ||
| 321 | + } | ||
| 322 | + } else { | ||
| 323 | + List<BusQueue> queueList = busQueueMapper.selectByUsernameAndHostId(username, virtualHostId); | ||
| 324 | + for (BusQueue queue : queueList) { | ||
| 325 | + busQueueService.deleteByPrimaryKey(queue.getId()); | ||
| 326 | + } | ||
| 327 | + } | ||
| 303 | return num > 0 | 328 | return num > 0 |
| 304 | ? new ResultJson<>("200", "删除用户信息,成功!") | 329 | ? new ResultJson<>("200", "删除用户信息,成功!") |
| 305 | : new ResultJson<>("500", "删除用户信息,失败!"); | 330 | : new ResultJson<>("500", "删除用户信息,失败!"); |
| 306 | } | 331 | } |
| 307 | 332 | ||
| 333 | + | ||
| 308 | /** | 334 | /** |
| 309 | * 删除用户关系(数据库 and MQ服务器) | 335 | * 删除用户关系(数据库 and MQ服务器) |
| 310 | * | 336 | * |
| @@ -314,6 +340,7 @@ public class UserInfoServiceImpl implements UserInfoService { | @@ -314,6 +340,7 @@ public class UserInfoServiceImpl implements UserInfoService { | ||
| 314 | * @throws URISyntaxException URI语法异常 | 340 | * @throws URISyntaxException URI语法异常 |
| 315 | */ | 341 | */ |
| 316 | @Override | 342 | @Override |
| 343 | + @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) | ||
| 317 | public ResultJson deleteUserRelation(UserInfo userInfo) throws IOException, URISyntaxException | 344 | public ResultJson deleteUserRelation(UserInfo userInfo) throws IOException, URISyntaxException |
| 318 | { | 345 | { |
| 319 | String virtualHostName = userInfo.getVirtualHostName(); | 346 | String virtualHostName = userInfo.getVirtualHostName(); |
| @@ -326,8 +353,6 @@ public class UserInfoServiceImpl implements UserInfoService { | @@ -326,8 +353,6 @@ public class UserInfoServiceImpl implements UserInfoService { | ||
| 326 | 353 | ||
| 327 | } | 354 | } |
| 328 | } | 355 | } |
| 329 | - | ||
| 330 | - | ||
| 331 | int num = userInfoMapper.deleteByPrimaryKey(userInfo.getId()); | 356 | int num = userInfoMapper.deleteByPrimaryKey(userInfo.getId()); |
| 332 | BusServer busServer = busServerService.selectByPrimaryKey(userInfo.getServerId()); | 357 | BusServer busServer = busServerService.selectByPrimaryKey(userInfo.getServerId()); |
| 333 | ClientUtils.clearPermissions(busServer, userInfo.getVirtualHostName(), userInfo.getUsername()); | 358 | ClientUtils.clearPermissions(busServer, userInfo.getVirtualHostName(), userInfo.getUsername()); |
| @@ -270,4 +270,14 @@ | @@ -270,4 +270,14 @@ | ||
| 270 | from bus_queue | 270 | from bus_queue |
| 271 | where username = #{username,jdbcType=VARCHAR} | 271 | where username = #{username,jdbcType=VARCHAR} |
| 272 | </select> | 272 | </select> |
| 273 | + | ||
| 274 | + <select id="selectByUsernameAndHostId" parameterType="java.lang.String" resultMap="BaseResultMap"> | ||
| 275 | + select | ||
| 276 | + <include refid="Base_Column_List"/> | ||
| 277 | + from bus_queue | ||
| 278 | + <where> | ||
| 279 | + username = #{username,jdbcType=VARCHAR} | ||
| 280 | + and virtual_host_id = #{virtualHostId,jdbcType=VARCHAR} | ||
| 281 | + </where> | ||
| 282 | + </select> | ||
| 273 | </mapper> | 283 | </mapper> |
| @@ -42,6 +42,15 @@ | @@ -42,6 +42,15 @@ | ||
| 42 | where username = #{username,jdbcType=VARCHAR} | 42 | where username = #{username,jdbcType=VARCHAR} |
| 43 | </delete> | 43 | </delete> |
| 44 | 44 | ||
| 45 | + <delete id="deleteByUsernameAndServerName" parameterType="java.lang.String"> | ||
| 46 | + delete | ||
| 47 | + from user_info | ||
| 48 | + <where> | ||
| 49 | + username = #{username,jdbcType=VARCHAR} | ||
| 50 | + and server_name= #{serverName,jdbcType=VARCHAR} | ||
| 51 | + </where> | ||
| 52 | + </delete> | ||
| 53 | + | ||
| 45 | <delete id="deleteByServerName" parameterType="java.lang.String"> | 54 | <delete id="deleteByServerName" parameterType="java.lang.String"> |
| 46 | delete | 55 | delete |
| 47 | from user_info | 56 | from user_info |
| @@ -276,4 +285,14 @@ | @@ -276,4 +285,14 @@ | ||
| 276 | </if> | 285 | </if> |
| 277 | </where> | 286 | </where> |
| 278 | </select> | 287 | </select> |
| 288 | + | ||
| 289 | + <select id="selectByUsernameAndServerName" parameterType="java.lang.String" resultMap="BaseResultMap"> | ||
| 290 | + select | ||
| 291 | + <include refid="Base_Column_List"/> | ||
| 292 | + from user_info | ||
| 293 | + <where> | ||
| 294 | + username = #{username,jdbcType=VARCHAR} | ||
| 295 | + and server_name = #{serverName,jdbcType=VARCHAR} | ||
| 296 | + </where> | ||
| 297 | + </select> | ||
| 279 | </mapper> | 298 | </mapper> |
-
请 注册 或 登录 后发表评论