/** * 订阅一个主题 * * @param channel 主题 */ @Override public void subscribe(final String channel) { if (!status.equals(STATUS.READY)) { recover(); try { Thread.sleep(2); } catch (InterruptedException e) { e.printStackTrace(); } } if (!listener.isSubscribed()) { throw new RuntimeException("Redis listener unvalidable!"); } try { Thread.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); } try { logger.debug("Call listener.subscribe - " + channel); listener.subscribe(channel); } catch (Exception e) { status = STATUS.BROKEN; logger.error(e.getMessage(), e); } }
private void notifySubscribeListeners(Channel channel, String channelName) { for (SubscribeListener listener : this.subscribeListeners) { try { listener.onSubscribe(channel.getRemoteAddress(), channelName); } catch (RuntimeException e) { // TODO : log exception } } }
@Override public void unsubscribePattern(String... patterns) { if (patterns != null) { listener.punsubscribe(patterns); } }
@Override public void unsubscribe(String... channels) { if (channels != null) { listener.unsubscribe(channels); } }