diff --git a/channel/channel-server/src/main/java/com/alibaba/arthas/channel/server/message/MessageExchangeService.java b/channel/channel-server/src/main/java/com/alibaba/arthas/channel/server/message/MessageExchangeService.java index a66b1dcc7..51f3f3615 100644 --- a/channel/channel-server/src/main/java/com/alibaba/arthas/channel/server/message/MessageExchangeService.java +++ b/channel/channel-server/src/main/java/com/alibaba/arthas/channel/server/message/MessageExchangeService.java @@ -31,6 +31,13 @@ public interface MessageExchangeService { void subscribe(Topic topic, int timeout, MessageHandler messageHandler) throws MessageExchangeException; + /** + * Whether exists the specify topic + * @param topic + * @return + */ + boolean containsTopic(Topic topic); + interface MessageHandler { /** * handle message diff --git a/channel/channel-server/src/main/java/com/alibaba/arthas/channel/server/message/impl/MessageExchangeServiceImpl.java b/channel/channel-server/src/main/java/com/alibaba/arthas/channel/server/message/impl/MessageExchangeServiceImpl.java index 0d0a40631..3f47c715a 100644 --- a/channel/channel-server/src/main/java/com/alibaba/arthas/channel/server/message/impl/MessageExchangeServiceImpl.java +++ b/channel/channel-server/src/main/java/com/alibaba/arthas/channel/server/message/impl/MessageExchangeServiceImpl.java @@ -101,6 +101,11 @@ public class MessageExchangeServiceImpl implements MessageExchangeService { } } + @Override + public boolean containsTopic(Topic topic) { + return topicMap.containsKey(topic); + } + @Override public void pushMessage(Topic topic, byte[] messageBytes) throws MessageExchangeException { TopicData topicData = topicMap.get(topic); diff --git a/channel/channel-server/src/main/java/com/alibaba/arthas/channel/server/redis/RedisMessageExchangeServiceImpl.java b/channel/channel-server/src/main/java/com/alibaba/arthas/channel/server/redis/RedisMessageExchangeServiceImpl.java index a10c7b1ae..1c65a9f99 100644 --- a/channel/channel-server/src/main/java/com/alibaba/arthas/channel/server/redis/RedisMessageExchangeServiceImpl.java +++ b/channel/channel-server/src/main/java/com/alibaba/arthas/channel/server/redis/RedisMessageExchangeServiceImpl.java @@ -79,6 +79,11 @@ public class RedisMessageExchangeServiceImpl implements MessageExchangeService { } } + @Override + public boolean containsTopic(Topic topic) { + return redisTemplate.hasKey(topic.getTopic()).block(); + } + @Override public void pushMessage(Topic topic, byte[] messageBytes) throws MessageExchangeException { String key = topic.getTopic();