@Override public synchronized void start() { if (!this.running) { Assert.notNull(getTaskScheduler(), "a task scheduler is required"); this.reaperScheduledFuture = getTaskScheduler() .schedule(this, new Date(System.currentTimeMillis() + this.reaperDelay)); this.running = true; } }
@Override protected void onInit() { super.onInit(); Assert.notNull(getTaskScheduler(), "a task scheduler is required"); }
@Override @Nullable public Object channelToChannelName(@Nullable Object channel, long timeToLive) { if (!this.running && !this.explicitlyStopped && this.getTaskScheduler() != null) { start(); } if (channel instanceof MessageChannel) { String name = this.uuid + id.incrementAndGet(); this.channels.put(name, new MessageChannelWrapper((MessageChannel) channel, System.currentTimeMillis() + timeToLive)); if (logger.isDebugEnabled()) { logger.debug("Registered " + channel + " as " + name); } return name; } else { return channel; } }
@Override public synchronized void run() { if (logger.isTraceEnabled()) { logger.trace("Reaper started; channels size=" + this.channels.size()); } Iterator<Entry<String, MessageChannelWrapper>> iterator = this.channels.entrySet().iterator(); long now = System.currentTimeMillis(); while (iterator.hasNext()) { Entry<String, MessageChannelWrapper> entry = iterator.next(); if (entry.getValue().getExpireAt() < now) { if (logger.isDebugEnabled()) { logger.debug("Expiring " + entry.getKey() + " (" + entry.getValue().getChannel() + ")"); } iterator.remove(); } } this.reaperScheduledFuture = getTaskScheduler() .schedule(this, new Date(System.currentTimeMillis() + this.reaperDelay)); if (logger.isTraceEnabled()) { logger.trace("Reaper completed; channels size=" + this.channels.size()); } }
@Override public synchronized void start() { if (!this.running) { Assert.notNull(getTaskScheduler(), "a task scheduler is required"); this.reaperScheduledFuture = getTaskScheduler() .schedule(this, new Date(System.currentTimeMillis() + this.reaperDelay)); this.running = true; } }
@Override protected void onInit() { super.onInit(); Assert.notNull(getTaskScheduler(), "a task scheduler is required"); }
@Override public Object channelToChannelName(@Nullable Object channel, long timeToLive) { if (!this.running && !this.explicitlyStopped && this.getTaskScheduler() != null) { start(); } if (channel != null && channel instanceof MessageChannel) { String name = this.uuid + id.incrementAndGet(); this.channels.put(name, new MessageChannelWrapper((MessageChannel) channel, System.currentTimeMillis() + timeToLive)); if (logger.isDebugEnabled()) { logger.debug("Registered " + channel + " as " + name); } return name; } else { return channel; } }
@Override public synchronized void run() { if (logger.isTraceEnabled()) { logger.trace("Reaper started; channels size=" + this.channels.size()); } Iterator<Entry<String, MessageChannelWrapper>> iterator = this.channels.entrySet().iterator(); long now = System.currentTimeMillis(); while (iterator.hasNext()) { Entry<String, MessageChannelWrapper> entry = iterator.next(); if (entry.getValue().getExpireAt() < now) { if (logger.isDebugEnabled()) { logger.debug("Expiring " + entry.getKey() + " (" + entry.getValue().getChannel() + ")"); } iterator.remove(); } } this.reaperScheduledFuture = getTaskScheduler() .schedule(this, new Date(System.currentTimeMillis() + this.reaperDelay)); if (logger.isTraceEnabled()) { logger.trace("Reaper completed; channels size=" + this.channels.size()); } }