@Override public Boolean login(final String userName, final String password) { LogUtil.info(LOGGER, "输入的用户名密码为:{}", () -> userName + "," + password); if (userName.equals(this.userName) && password.equals(this.password)) { LOGIN_SUCCESS = true; return Boolean.TRUE; } return Boolean.FALSE; }
public void commit(final List<TxTransactionItem> txTransactionItems) { try { execute(txTransactionItems, TransactionStatusEnum.COMMIT); } catch (Exception e) { e.printStackTrace(); LogUtil.info(LOGGER, "txManger 发送commit 指令异常 ", e::getMessage); } }
public void rollBack(final List<TxTransactionItem> txTransactionItems) { try { execute(txTransactionItems, TransactionStatusEnum.ROLLBACK); } catch (Exception e) { e.printStackTrace(); LogUtil.info(LOGGER, "txManger 发送rollback指令异常 ", e::getMessage); } }
private void run() { LogUtil.info(LOGGER, "refresh updateTxManagerServices delayTime:{}", () -> txConfig.getRefreshInterval()); updateTxManagerServices(); } }
@Override public void doConnect() { if (channel != null && channel.isActive()) { return; } final TxManagerServer txManagerServer = TxManagerLocator.getInstance().locator(); if (Objects.nonNull(txManagerServer) && StringUtils.isNoneBlank(txManagerServer.getHost()) && Objects.nonNull(txManagerServer.getPort())) { host = txManagerServer.getHost(); port = txManagerServer.getPort(); } ChannelFuture future = bootstrap.connect(host, port); LogUtil.info(LOGGER, ".....connect txManager-socket -> host:port:{}", () -> host + ":" + port); future.addListener((ChannelFutureListener) futureListener -> { if (futureListener.isSuccess()) { channel = futureListener.channel(); LogUtil.info(LOGGER, "Connect to server successfully!-> host:port:{}", () -> host + ":" + port); } else { LogUtil.info(LOGGER, "Failed to connect to server, try connect after 5s-> host:port:{}", () -> host + ":" + port); futureListener.channel().eventLoop().schedule(this::doConnect, 5, TimeUnit.SECONDS); } }); }
@Override protected void doCommit(final String txGroupId, final List<TxTransactionItem> txTransactionItems, final List<TxTransactionItem> elseItems) { try { txTransactionItems.forEach(item -> { ChannelSender sender = new ChannelSender(); HeartBeat heartBeat = ExecutorMessageTool.buildMessage(item, sender, TransactionStatusEnum.COMMIT); if (Objects.nonNull(sender.getChannel())) { sender.getChannel().writeAndFlush(heartBeat); LogUtil.info(LOGGER, "txManger 成功发送doCommit指令 事务taskId为:{}", item::getTaskKey); } else { LOGGER.error("txManger 发送doCommit指令失败,channel为空,事务组id:{}, 事务taskId为:{}", txGroupId, item.getTaskKey()); } }); httpExecute(elseItems, TransactionStatusEnum.COMMIT); } catch (Exception e) { e.printStackTrace(); LogUtil.info(LOGGER, "txManger 发送doCommit指令异常 ", e::getMessage); } }
/** * 回滚整个事务组. * * @param txGroupId 事务组id */ @Override public void rollBack(final String txGroupId) { txManagerService.updateTxTransactionItemStatus(txGroupId, txGroupId, TransactionStatusEnum.ROLLBACK.getCode(), null); final List<TxTransactionItem> txTransactionItems = txManagerService.listByTxGroupId(txGroupId); if (CollectionUtils.isNotEmpty(txTransactionItems)) { final Map<Boolean, List<TxTransactionItem>> listMap = filterData(txTransactionItems); if (Objects.isNull(listMap)) { LogUtil.info(LOGGER, "事务组id:{},提交失败!数据不完整", () -> txGroupId); return; } final List<TxTransactionItem> currentItem = listMap.get(Boolean.TRUE); final List<TxTransactionItem> elseItems = listMap.get(Boolean.FALSE); doRollBack(txGroupId, currentItem, elseItems); } }
JedisPool jedisPool; if (txRedisConfig.getCluster()) { LogUtil.info(LOGGER, () -> "build tx redis cluster ............"); final String clusterUrl = txRedisConfig.getClusterUrl(); final Set<HostAndPort> hostAndPorts = jedisClient = new JedisClientCluster(jedisCluster); } else if (txRedisConfig.getSentinel()) { LogUtil.info(LOGGER, () -> "build tx redis sentinel ............"); final String sentinelUrl = txRedisConfig.getSentinelUrl(); final Set<String> hostAndPorts =
final Map<Boolean, List<TxTransactionItem>> listMap = filterData(txTransactionItems); if (Objects.isNull(listMap)) { LogUtil.info(LOGGER, "事务组id:{},提交失败!数据不完整", () -> txGroupId); return;
@Override public Object handler(final ProceedingJoinPoint point, final TxTransactionInfo info) throws Throwable { LogUtil.info(LOGGER, "tx transaction actor begin.... groupId:{}", info::getTxGroupId); final String taskKey = IdWorkerUtils.getInstance().createTaskKey(); final BlockTask task = BlockTaskHelper.getInstance().getTask(taskKey); LogUtil.info(LOGGER, "transaction group id:{}", info::getTxGroupId); final BlockTask blockTask = BlockTaskHelper.getInstance().getTask(waitKey); if (!blockTask.isNotify()) { LogUtil.info(LOGGER, "transaction group id:{} when time out ,execute commit transaction!", info::getTxGroupId); waitTask.setAsyncCall(objects -> TransactionStatusEnum.COMMIT.getCode()); waitTask.signal(); LogUtil.info(LOGGER, "transaction group id {},time out ,execute rollback!", info::getTxGroupId); waitTask.setAsyncCall(objects -> NettyResultEnum.TIME_OUT.getCode()); waitTask.signal(); LogUtil.info(LOGGER, "receive txManager command!{}", () -> info.getTxGroupId() + ":" + waitKey); LogUtil.info(LOGGER, () -> "actor tx-transaction-end"); try { return task.getAsyncCall().callBack();