Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -231,6 +231,10 @@ public void run() {
catch (PulsarClientException e) {
DefaultPulsarMessageReaderContainer.this.logger.error(e, () -> "Error receiving messages.");
}
catch (Exception e) {
DefaultPulsarMessageReaderContainer.this.logger.error(e,
() -> "Error processing message in reader listener.");
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,36 @@ void latestMessageId() throws Exception {
}
}

@Test
void readerContinuesAfterListenerThrowsException() throws Exception {
var latch = new CountDownLatch(1);
var containerProps = new PulsarReaderContainerProperties();
containerProps.setReaderListener((ReaderListener<?>) (reader, msg) -> {
if ("fail".equals(msg.getValue())) {
throw new IllegalStateException("Listener failed for " + msg.getValue());
}
latch.countDown();
});
containerProps.setStartMessageId(MessageId.earliest);
containerProps.setTopics(List.of("dprlct-004"));
containerProps.setSchema(Schema.STRING);

var readerFactory = new DefaultPulsarReaderFactory<String>(pulsarClient);
var container = new DefaultPulsarMessageReaderContainer<>(readerFactory, containerProps);
try {
container.start();
var producerFactory = new DefaultPulsarProducerFactory<>(pulsarClient, "dprlct-004",
List.of((pb) -> pb.topic("dprlct-004")));
var pulsarTemplate = new PulsarTemplate<>(producerFactory);
pulsarTemplate.send("fail");
pulsarTemplate.send("hello after failure");
assertThat(latch.await(10, TimeUnit.SECONDS)).isTrue();
}
finally {
safeStopContainer(container);
}
}

private void safeStopContainer(PulsarMessageReaderContainer container) {
try {
container.stop();
Expand Down
Loading