diff --git a/jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/service/DeviceMessageBusinessHandler.java b/jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/service/DeviceMessageBusinessHandler.java index cf2c53ac..917bcc75 100644 --- a/jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/service/DeviceMessageBusinessHandler.java +++ b/jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/service/DeviceMessageBusinessHandler.java @@ -127,10 +127,13 @@ public class DeviceMessageBusinessHandler { @Subscribe("/device/*/*/message/children/*/register") @Transactional(propagation = Propagation.NEVER) public Mono autoBindChildrenDevice(ChildDeviceMessage message) { - String childId = message.getChildDeviceId(); Message childMessage = message.getChildDeviceMessage(); if (childMessage instanceof DeviceRegisterMessage) { - + String childId = ((DeviceRegisterMessage) childMessage).getDeviceId(); + if (message.getDeviceId().equals(childId)) { + log.warn("子设备注册消息循环依赖:{}", message); + return Mono.empty(); + } return registry .getDevice(childId) .switchIfEmpty(Mono.defer(() -> doAutoRegister(((DeviceRegisterMessage) childMessage)))) @@ -157,10 +160,9 @@ public class DeviceMessageBusinessHandler { */ @Subscribe("/device/*/*/message/children/*/unregister") public Mono autoUnbindChildrenDevice(ChildDeviceMessage message) { - String childId = message.getChildDeviceId(); Message childMessage = message.getChildDeviceMessage(); if (childMessage instanceof DeviceUnRegisterMessage) { - + String childId = ((DeviceUnRegisterMessage) childMessage).getDeviceId(); return registry .getDevice(childId) .flatMap(dev -> dev