package com.netflix.schlep.writer; import java.util.concurrent.TimeUnit; import org.junit.Ignore; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import rx.util.functions.Action1; import com.google.common.base.Suppliers; import com.google.inject.AbstractModule; import com.google.inject.Guice; import com.google.inject.Inject; import com.google.inject.Injector; import com.google.inject.Singleton; import com.netflix.schlep.Completion; import com.netflix.schlep.guice.SchlepModule; import com.netflix.schlep.producer.MessageProducerManager; import com.netflix.schlep.producer.MessageProducer; import com.netflix.schlep.producer.OutgoingMessage; import com.netflix.schlep.sim.SimMessageProducer; public class WriterTest { private static final Logger LOG = LoggerFactory.getLogger(WriterTest.class); public static final String WRITER_ID = "WriterTest"; /** * * @author elandau */ @Singleton public static class MyService { private MessageProducer writer; @Inject public MyService(MessageProducerManager manager) throws Exception { this.writer = manager.get(WRITER_ID); for (int i = 0; i < 10; i++) { this.writer .send(OutgoingMessage.builder() .withMessage("test-" + i) .build()) .subscribe(new Action1<Completion<OutgoingMessage>>() { @Override public void call(Completion<OutgoingMessage> message) { LOG.info(" Ack: " + message.getValue().getMessage()); } }); } } } @Test @Ignore public void test() throws Exception { LOG.info("Starting test"); Injector injector = Guice.createInjector( new SchlepModule(), new AbstractModule() { @Override protected void configure() { bind(MyService.class); } } ); LOG.info("Started LifecycleManager"); MessageProducerManager writerManager = injector.getInstance(MessageProducerManager.class); writerManager.add( SimMessageProducer.builder() .withId(WRITER_ID) .withBatchSize(3) .withThreadCount(3) .build()); injector.getInstance(MyService.class); Thread.sleep(TimeUnit.MINUTES.toMillis(1)); } }