private Boolean checkChannel(final List<TxTransactionItem> txTransactionItems) { if (CollectionUtils.isNotEmpty(txTransactionItems)) { final List<TxTransactionItem> collect = txTransactionItems.stream().filter(item -> { Channel channel = SocketManager.getInstance().getChannelByModelName(item.getModelName()); return Objects.nonNull(channel) && (channel.isActive() || item.getStatus() != TransactionStatusEnum.ROLLBACK.getCode()); }).collect(Collectors.toList()); return txTransactionItems.size() == collect.size(); } return true; }
public static HeartBeat buildMessage(final TxTransactionItem item, final ChannelSender channelSender, final TransactionStatusEnum transactionStatusEnum) { HeartBeat heartBeat = new HeartBeat(); Channel channel = SocketManager.getInstance().getChannelByModelName(item.getModelName()); if (Objects.nonNull(channel)) { if (channel.isActive()) { channelSender.setChannel(channel); } } TxTransactionGroup txTransactionGroup = new TxTransactionGroup(); if (TransactionStatusEnum.ROLLBACK.getCode() == transactionStatusEnum.getCode()) { heartBeat.setAction(NettyMessageActionEnum.ROLLBACK.getCode()); item.setStatus(TransactionStatusEnum.ROLLBACK.getCode()); txTransactionGroup.setStatus(TransactionStatusEnum.ROLLBACK.getCode()); } else if (TransactionStatusEnum.COMMIT.getCode() == transactionStatusEnum.getCode()) { heartBeat.setAction(NettyMessageActionEnum.COMPLETE_COMMIT.getCode()); item.setStatus(TransactionStatusEnum.COMMIT.getCode()); txTransactionGroup.setStatus(TransactionStatusEnum.COMMIT.getCode()); } txTransactionGroup.setItemList(Collections.singletonList(item)); heartBeat.setTxTransactionGroup(txTransactionGroup); return heartBeat; } }
public static TxTransactionItemVO buildTxItemVO(final TxTransactionItem item) { TxTransactionItemVO vo = new TxTransactionItemVO(); vo.setCreateDate(item.getCreateDate()); vo.setModelName(item.getModelName()); vo.setRole(TransactionRoleEnum.acquireDescByCode(item.getRole())); vo.setStatus(TransactionStatusEnum.acquireDescByCode(item.getStatus())); vo.setTargetClass(item.getTargetClass()); vo.setTransId(item.getTransId()); vo.setTargetMethod(item.getTargetMethod()); vo.setModelName(item.getModelName()); vo.setTmDomain(item.getTmDomain()); vo.setTaskKey(item.getTaskKey()); vo.setTxGroupId(item.getTxGroupId()); vo.setWaitMaxTime(item.getWaitMaxTime()); vo.setConsumeTime(item.getConsumeTime()); vo.setMessage(item.getMessage()); return vo; }