public ReaderImpl(PulsarClientImpl client, String topic, MessageId startMessageId,
ReaderConfiguration readerConfiguration, ExecutorService listenerExecutor,
CompletableFuture<Consumer> consumerFuture) {
String subscription = "reader-" + DigestUtils.sha1Hex(UUID.randomUUID().toString()).substring(0, 10);
ConsumerConfiguration consumerConfiguration = new ConsumerConfiguration();
consumerConfiguration.setSubscriptionType(SubscriptionType.Exclusive);
consumerConfiguration.setReceiverQueueSize(readerConfiguration.getReceiverQueueSize());
if (readerConfiguration.getReaderName() != null) {
consumerConfiguration.setConsumerName(readerConfiguration.getReaderName());
}
if (readerConfiguration.getReaderListener() != null) {
ReaderListener readerListener = readerConfiguration.getReaderListener();
consumerConfiguration.setMessageListener(new MessageListener() {
private static final long serialVersionUID = 1L;
@Override
public void received(Consumer consumer, Message msg) {
readerListener.received(ReaderImpl.this, msg);
consumer.acknowledgeCumulativeAsync(msg);
}
@Override
public void reachedEndOfTopic(Consumer consumer) {
readerListener.reachedEndOfTopic(ReaderImpl.this);
}
});
}
consumer = new ConsumerImpl(client, topic, subscription, consumerConfiguration, listenerExecutor, -1,
consumerFuture, SubscriptionMode.NonDurable, startMessageId);
}