Skip to content

Instantly share code, notes, and snippets.

@anatollupacescu
Last active August 29, 2015 14:10
Show Gist options
  • Save anatollupacescu/e1193504dcbd853bc2ac to your computer and use it in GitHub Desktop.
Save anatollupacescu/e1193504dcbd853bc2ac to your computer and use it in GitHub Desktop.
package org.test;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.logging.Logger;
/*
<bean id="taskExecutor" class="java.util.concurrent.Executors"
factory-method="newScheduledThreadPool" destroy-method="shutdown">
<constructor-arg value="10"/>
</bean>
<bean id="messageResendService" class="org.test.MessageResendService"
c:taskExecutor-ref="taskExecutor"
c:messageService-ref="myMessageService"
c:delay="10" />
*/
public class MessageResendService {
private final static Logger log = Logger.getAnonymousLogger();
private final Long DELAY_SECONDS;
private final ScheduledExecutorService taskExecutor;
private MessageService messageService;
public MessageResendService(ScheduledExecutorService taskExecutor, MessageService messageService, int delay) {
this.taskExecutor = taskExecutor;
this.messageService = messageService
this.DELAY_SECONDS = delay;
}
public void submit(final Message m) {
messageService.send(m);
taskExecutor.schedule(new Runnable() {
@Override
public void run() {
messageService.send(m);
}
}, DELAY_SECONDS, TimeUnit.SECONDS);
}
@PreDestroy
public void shutDown() {
taskExecutor.shutdownNow();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment