From 1ffdebec1dbc07e68f346db2716bee1c04f1e324 Mon Sep 17 00:00:00 2001 From: xwm1992 Date: Sun, 7 Feb 2021 11:01:25 +0800 Subject: [PATCH] [ISSUE #212]For multiple listening instances, only the last started instance can receive messages --- .../http/processor/HeartBeatProcessor.java | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/eventmesh-runtime/src/main/java/com/webank/eventmesh/runtime/core/protocol/http/processor/HeartBeatProcessor.java b/eventmesh-runtime/src/main/java/com/webank/eventmesh/runtime/core/protocol/http/processor/HeartBeatProcessor.java index 53baca02cc..23ac447edf 100644 --- a/eventmesh-runtime/src/main/java/com/webank/eventmesh/runtime/core/protocol/http/processor/HeartBeatProcessor.java +++ b/eventmesh-runtime/src/main/java/com/webank/eventmesh/runtime/core/protocol/http/processor/HeartBeatProcessor.java @@ -150,18 +150,7 @@ public void processRequest(ChannelHandlerContext ctx, AsyncContext proxyHTTPServer.localClientInfoMapping.put(groupTopicClientMapping.getKey(), groupTopicClientMapping.getValue()); }else { List tmpClientList = groupTopicClientMapping.getValue(); - for (Client tmpClient : tmpClientList){ - boolean isContains = false; - for (Client localClient : localClientList){ - if (StringUtils.equals(localClient.url, tmpClient.url)){ - isContains = true; - break; - } - } - if (!isContains){ - localClientList.add(tmpClient); - } - } + supplyClientInfoList(tmpClientList, localClientList); proxyHTTPServer.localClientInfoMapping.put(groupTopicClientMapping.getKey(), localClientList); } @@ -203,6 +192,21 @@ public void onResponse(HttpCommand httpCommand) { } + private void supplyClientInfoList(List tmpClientList, List localClientList) { + for (Client tmpClient : tmpClientList){ + boolean isContains = false; + for (Client localClient : localClientList){ + if (StringUtils.equals(localClient.url, tmpClient.url)){ + isContains = true; + break; + } + } + if (!isContains){ + localClientList.add(tmpClient); + } + } + } + @Override public boolean rejectRequest() { return false;