@Override public void bootstrapComplete() throws InterruptedException { // Start a messaging consumer for the default inbox. ConsumerFactory consumerFactory = injector.getInstance(ConsumerFactory.class); consumerFactory.defaultInboxConsumer(new DiscardFailedMessages()); injector.getInstance(RandomEventHandler.class); super.bootstrapComplete(); } }
private PartitionProcessorFactory processorFactory() { TypeDictionary typeDictionary = new TypeDictionary(new HashMap<>(), new HashMap<>()); FailedMessageProcessor failedMessageProcessor = new DiscardFailedMessages(); return new PartitionProcessorFactory(typeDictionary, failedMessageProcessor, null, null); }
private PartitionProcessor givenAPartionProcessor() { TopicPartition topicKey = new TopicPartition(TOPIC, PARTITION); TypeDictionary typeDictionary = new TestTypeDictionary(); FailedMessageProcessor failedMessageProcessor = new DiscardFailedMessages(); MetricBuilderFactory metricsBuilderFactory = null; Tracer tracer = null; return new PartitionProcessor(topicKey, typeDictionary, failedMessageProcessor, tracer, metricsBuilderFactory); }
@Test public void retryFailedMessages() throws InterruptedException { TopicPartition topicKey = new TopicPartition(TOPIC, PARTITION); TypeDictionary typeDictionary = new TestTypeDictionary(); class RetryableTestException extends RuntimeException { } class RetryTestFailureHandler extends DelayAndRetryOnRecoverableErrors { public RetryTestFailureHandler(FailedMessageProcessor fallbackStrategy, RetryDelayer retryStrategy) { super(fallbackStrategy, retryStrategy); } @Override protected boolean isRecoverable(Throwable failureCause) { if (failureCause instanceof RetryableTestException) { return true; } return super.isRecoverable(failureCause); } } FailedMessageProcessor failedMessageProcessor = new RetryTestFailureHandler(new DiscardFailedMessages(), new SimpleRetryDelayer(10, 100)); PartitionProcessor processor = new PartitionProcessor(topicKey, typeDictionary, failedMessageProcessor, null, null); getTestHandler(processor).exceptionToBeThrown = new RetryableTestException(); processor.enqueue(testRecordWithOffset(42)); getTestHandler(processor).blockReturnFromOnMessage.countDown(); getTestHandler(processor).handlerReturnedNormally.await(); processor.waitForHandlersToTerminate(100); assertEquals(2, getTestHandler(processor).nbHandlerInvokations.get()); assertTrue(processor.hasUncommittedMessages()); assertEquals(43, processor.getCommitOffsetAndClear()); }
).consumerForTopic(ping, new DiscardFailedMessages()); ).consumerForTopic(ping, new DiscardFailedMessages()); ).consumerForTopic(ping, new DiscardFailedMessages()); firstMessageProcessedConsumer3.await(); Thread.sleep(5000);
FailedMessageProcessor failedMessageProcessor = new RetryTestFailureHandler(new DiscardFailedMessages(), new SimpleRetryDelayer(10, 200)); PartitionProcessor processor = new PartitionProcessor(topicKey, typeDictionary, failedMessageProcessor, null, null);
Consumer requestConsumer = consumerFactory.consumerForTopic(ping, new DiscardFailedMessages()); Consumer replyConsumer = consumerFactory.consumerForTopic(pong, new DiscardFailedMessages());
).consumerForTopic(cruft, new DiscardFailedMessages());