package com.netflix.schlep.router;
import java.util.concurrent.TimeUnit;
import org.junit.Ignore;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import rx.Observable;
import rx.concurrency.Schedulers;
import rx.util.functions.Action1;
import com.google.common.base.Suppliers;
import com.netflix.schlep.Completion;
import com.netflix.schlep.consumer.IncomingMessage;
import com.netflix.schlep.consumer.MessageHandler;
import com.netflix.schlep.processor.MessageProcessors;
import com.netflix.schlep.producer.MessageProducerManager;
import com.netflix.schlep.producer.MessageProducer;
import com.netflix.schlep.sim.SimMessageConsumer;
import com.netflix.schlep.sim.SimMessageProducer;
public class RouterTest {
private static final Logger LOG = LoggerFactory.getLogger(RouterTest.class);
public static final String WRITER_ID = "WriterTest";
public static final String READER_ID = "ReaderTest";
@Test
@Ignore
public void test() throws Exception {
// MessageProducerRegistry writerManager = new MessageProducerRegistry();
// writerManager.add(
// WRITER_ID,
// Suppliers.<MessageWriter>ofInstance(SimMessageWriter.builder()
// .withId(WRITER_ID)
// .withBatchSize(3)
// .withWriterCount(3)
// .build()));
//
// MessageConsumerRegistry readerManager = new MessageConsumerRegistry(null);
// readerManager.add(
// SimMessageConsumer.builder()
// .withId(READER_ID)
// .withBatchSize(10)
// .withThrottle(1, TimeUnit.SECONDS)
// .withMaxCount(100)
// .build());
//
// final MessageRouter dispatcher = new MessageRouter(Observable.create(readerManager.get(READER_ID)));
//
// // Async, one thread per reply,
// dispatcher.addProcessor("id1", MessageProcessors.async(new Action1<IncomingMessage>() {
// @Override
// public void call(IncomingMessage message) {
// try {
// Thread.sleep(10);
// } catch (InterruptedException e) {
// }
// LOG.info("Async : " + message);
// }
// }, Schedulers.newThread()));
//
// // Sync, reply immediately
// dispatcher.addProcessor("id2", new MessageHandler() {
// @Override
// public Observable<Completion<IncomingMessage>> call(IncomingMessage message) {
// LOG.info("Sync : " + message);
// return Observable.just(Completion.from(message));
// }
// });
//
// // Funnel reply to writer
// final MessageWriter writer = SimMessageWriter.builder().build();
//
// dispatcher.addProcessor("id3", MessageProcessors.toWriter(writer));
//
// Thread.sleep(TimeUnit.MINUTES.toMillis(1));
}
}