|
|
@@ -11,8 +11,6 @@ import org.jetlinks.core.message.*;
|
|
|
import org.reactivestreams.Publisher;
|
|
|
import reactor.core.publisher.*;
|
|
|
import reactor.core.scheduler.Schedulers;
|
|
|
-
|
|
|
-import java.util.Arrays;
|
|
|
import java.util.List;
|
|
|
import java.util.Optional;
|
|
|
import java.util.stream.Collectors;
|
|
|
@@ -31,7 +29,11 @@ public class ClusterDeviceMessageBrokeMessageBroker extends StandaloneDeviceMess
|
|
|
|
|
|
private ClusterManager clusterManager;
|
|
|
|
|
|
- private List<ServerNode> allNode;
|
|
|
+
|
|
|
+
|
|
|
+ private List<ServerNode> getAllNode(){
|
|
|
+ return clusterManager.getHaManager().getAllNode();
|
|
|
+ }
|
|
|
|
|
|
public ClusterDeviceMessageBrokeMessageBroker(String serverId, ClusterManager clusterManager) {
|
|
|
this.serverId = serverId;
|
|
|
@@ -54,7 +56,7 @@ public class ClusterDeviceMessageBrokeMessageBroker extends StandaloneDeviceMess
|
|
|
//当前设备
|
|
|
return super.send(serverId,message);
|
|
|
}else {
|
|
|
- Optional<ServerNode> server = allNode.stream().filter(node -> node.getId().equals(serverId)).findFirst();
|
|
|
+ Optional<ServerNode> server = getAllNode().stream().filter(node -> node.getId().equals(serverId)).findFirst();
|
|
|
if(!server.isPresent()){
|
|
|
//设备连接服务器离线,则发送信息失败
|
|
|
log.error("服务器{}离线,发送设备信息失败",serverId);
|
|
|
@@ -71,9 +73,7 @@ public class ClusterDeviceMessageBrokeMessageBroker extends StandaloneDeviceMess
|
|
|
|
|
|
@Override
|
|
|
public Mono<Integer> send(Publisher<? extends BroadcastMessage> message) {
|
|
|
- List<ServerNode> serverNodes = CollectionUtil.newArrayList(allNode);
|
|
|
- return Flux.fromStream(serverNodes.stream())
|
|
|
- .filter(allNode::contains)
|
|
|
+ return Flux.fromStream(getAllNode().stream())
|
|
|
.map(ServerNode::getId)
|
|
|
.flatMap(serverId-> clusterManager.getTopic(ClusterMessageType.topicOf(serverId,ClusterMessageType.down))
|
|
|
.publish(Mono.from(message).doOnNext(msg->msg.addHeader(Headers.serverId,serverId))))
|