subscriptionTask.cancel(); return; subscriptionTask.cancel(); subscriptionTask.unsubscribeChannel(channelsToRemove.toArray(new byte[channelsToRemove.size()][])); subscriptionTask.unsubscribePattern(patternsToRemove.toArray(new byte[patternsToRemove.size()][]));
closeConnection(); } else { logger.warn("Unable to close connection. Subscription task still running");
SubscriptionPresentCondition subscriptionPresent = eventuallyPerformSubscription();
subscriptionTask.subscribeChannel(channels.toArray(new byte[channels.size()][])); subscriptionTask.subscribePattern(patterns.toArray(new byte[patterns.size()][]));
subscriptionTask.subscribeChannel(channels.toArray(new byte[channels.size()][])); subscriptionTask.subscribePattern(patterns.toArray(new byte[patterns.size()][]));
subscriptionTask.cancel(); return; subscriptionTask.cancel(); subscriptionTask.unsubscribeChannel(channelsToRemove.toArray(new byte[channelsToRemove.size()][])); subscriptionTask.unsubscribePattern(patternsToRemove.toArray(new byte[patternsToRemove.size()][]));
subscriptionTask.cancel(); return; subscriptionTask.cancel(); subscriptionTask.unsubscribeChannel(channelsToRemove.toArray(new byte[channelsToRemove.size()][])); subscriptionTask.unsubscribePattern(patternsToRemove.toArray(new byte[patternsToRemove.size()][]));
closeConnection(); } else { logger.warn("Unable to close connection. Subscription task still running");
SubscriptionPresentCondition subscriptionPresent = eventuallyPerformSubscription();
SubscriptionPresentCondition subscriptionPresent = eventuallyPerformSubscription();
closeConnection(); } else { logger.warn("Unable to close connection. Subscription task still running");
/** * Performs a potentially asynchronous registration of a subscription. * * @return #SubscriptionPresentCondition that can serve as a handle to check whether the subscription is ready. */ private SubscriptionPresentCondition eventuallyPerformSubscription() { SubscriptionPresentCondition condition = null; if (channelMapping.isEmpty()) { condition = new PatternSubscriptionPresentCondition(); connection.pSubscribe(new DispatchMessageListener(), unwrap(patternMapping.keySet())); } else { if (patternMapping.isEmpty()) { condition = new SubscriptionPresentCondition(); } else { // schedule the rest of the subscription subscriptionExecutor.execute(new PatternSubscriptionTask()); condition = new PatternSubscriptionPresentCondition(); } connection.subscribe(new DispatchMessageListener(), unwrap(channelMapping.keySet())); } return condition; }
/** * Performs a potentially asynchronous registration of a subscription. * * @return #SubscriptionPresentCondition that can serve as a handle to check whether the subscription is ready. */ private SubscriptionPresentCondition eventuallyPerformSubscription() { SubscriptionPresentCondition condition = null; if (channelMapping.isEmpty()) { condition = new PatternSubscriptionPresentCondition(); connection.pSubscribe(new DispatchMessageListener(), unwrap(patternMapping.keySet())); } else { if (patternMapping.isEmpty()) { condition = new SubscriptionPresentCondition(); } else { // schedule the rest of the subscription subscriptionExecutor.execute(new PatternSubscriptionTask()); condition = new PatternSubscriptionPresentCondition(); } connection.subscribe(new DispatchMessageListener(), unwrap(channelMapping.keySet())); } return condition; }
/** * Handle subscription task exception. Will attempt to restart the subscription if the Exception is a connection * failure (for example, Redis was restarted). * * @param ex Throwable exception */ protected void handleSubscriptionException(Throwable ex) { listening = false; subscriptionTask.closeConnection(); if (ex instanceof RedisConnectionFailureException) { if (isRunning()) { logger.error("Connection failure occurred. Restarting subscription task after " + recoveryInterval + " ms"); sleepBeforeRecoveryAttempt(); lazyListen(); } } else { logger.error("SubscriptionTask aborted with exception:", ex); } }
private void initMapping(Map<? extends MessageListener, Collection<? extends Topic>> listeners) { // stop the listener if currently running if (isRunning()) { subscriptionTask.cancel(); } patternMapping.clear(); channelMapping.clear(); listenerTopics.clear(); if (!CollectionUtils.isEmpty(listeners)) { for (Map.Entry<? extends MessageListener, Collection<? extends Topic>> entry : listeners.entrySet()) { addListener(entry.getKey(), entry.getValue()); } } // resume activity if (initialized) { start(); } }
private void initMapping(Map<? extends MessageListener, Collection<? extends Topic>> listeners) { // stop the listener if currently running if (isRunning()) { subscriptionTask.cancel(); } patternMapping.clear(); channelMapping.clear(); listenerTopics.clear(); if (!CollectionUtils.isEmpty(listeners)) { for (Map.Entry<? extends MessageListener, Collection<? extends Topic>> entry : listeners.entrySet()) { addListener(entry.getKey(), entry.getValue()); } } // resume activity if (initialized) { start(); } }
/** * Handle subscription task exception. Will attempt to restart the subscription if the Exception is a connection * failure (for example, Redis was restarted). * * @param ex Throwable exception */ protected void handleSubscriptionException(Throwable ex) { listening = false; subscriptionTask.closeConnection(); if (ex instanceof RedisConnectionFailureException) { if (isRunning()) { logger.error("Connection failure occurred. Restarting subscription task after " + recoveryInterval + " ms"); sleepBeforeRecoveryAttempt(); lazyListen(); } } else { logger.error("SubscriptionTask aborted with exception:", ex); } }
public void stop() { if (isRunning()) { running = false; subscriptionTask.cancel(); } if (logger.isDebugEnabled()) { logger.debug("Stopped RedisMessageListenerContainer"); } }
public void stop() { if (isRunning()) { running = false; subscriptionTask.cancel(); } if (logger.isDebugEnabled()) { logger.debug("Stopped RedisMessageListenerContainer"); } }
subscriptionTask.subscribeChannel(channels.toArray(new byte[channels.size()][])); subscriptionTask.subscribePattern(patterns.toArray(new byte[patterns.size()][]));