У меня есть способ, при котором я перебираю максимальное количество разделов и пытаюсь создать программу чтения, пока не произойдет ошибка.
Код: Выделить всё
for (i in 0..MAX_NUM_PARTITIONS) {
val topicPartition = "$topic-partition-$i"
var partitionReader: Reader? = null
try {
partitionReader =
client
.newReader(BYTES)
.startMessageId(MessageId.latest)
.topic(topicPartition)
.create()
} catch (e: Exception) {
// TODO: This still prints a CompletionException error to the console unnecessarily.
// Either catch that or calculate # partitions in a cleaner way.
break
}
if (partitionReader != null) {
readers.add(partitionReader)
}
}
org.apache.pulsar.client.api.PulsarClientException$NotAllowedException:
{" errorMsg":"Недопустимое имя раздела темы...
Я хотел бы перехватить приведенное выше исключение и не выводить его на консоль, несмотря на это. попробуйте-catch выше, он все равно печатает. Почему? Это явление, связанное с сопрограммой Kotlin. Код выполняется в функции приостановки.
Обновление: дополнительная информация об ошибке: https:/ /pastebin.com/NqMDU5vR
Я не хочу печатать именно длинную трассировку стека CompletionException. Дело в том, чтобы улучшить качество вывода отладки на консоль.Возможно, ошибка вызвана внутренним API Pulsar, и нет способа остановить ее печать?
Подробнее здесь: https://stackoverflow.com/questions/792 ... n-function
Мобильная версия