Является ли метод consumer.createMessageStreams (map) читать последовательно или читать в некотором пакете

Я не могу сказать , почему Джеймс Гослинг и другие выбрали эту конкретную альтернативу ...

Однако использование круглых скобок вместо фигурных скобок создало бы серьезную проблему двусмысленности для грамматика Java. Рассмотрим следующий пример:

Object[] tableHeaders = ("Cars");

Обозначают ли круглые скобки конструктор массива или являются частью синтаксиса выражения нормального выражения?

Теперь можно было бы подойти с некоторыми сложными правилами приоритета, чтобы покрыть это, но это затрудняет жизнь как для программистов, так и для авторов компилятора.

(На грамматическом уровне парсер Java должен иметь дело с двусмысленностью в:

VariableInitializer:
    ArrayInitializer
    Expression

В приведенном выше примере ("Cars") соответствует как ArrayInitializer, так и Expression productions ... если вы используете круглые скобки для инициализаторов массива. Решение, которое является правильным значением, потребует просмотра объявленного типа переменной ... с последующим контекстом

Я бы сказал, что они сделали правильный выбор, не используя круглые скобки для инициализаторов массива.


Квадратные скобки не будут работать или. Попробуйте объяснить это ...

... = new Object[]["Cars"];  // 1-D array

против

... = new Object[21][];      // 2-D array

против

... = new Object[][];        // is that 1-D or 2-D?
0
задан Matthias J. Sax 15 April 2019 в 02:20
поделиться

1 ответ

Прежде всего, отметим, что классы ConsumerConnector или kafka.consumer.KafkaStream устарели в версии kafka v # 0.11.0. В случае, если вы используете старую версию, вы должны запланировать обновление до более новой версии по крайней мере v # 1.0 или более.

Будет ли метод createMessageStreams последовательно считывать данные из темы или считывать данные в определенном количестве пакетов и обрабатывать их?

.createMessageStreams возвращает карту темы и список KafkaStream пара. (topic,list#stream) Каждый поток поддерживает итератор для сообщений или пару метаданных для темы. Он читает данные последовательно только внутри раздела. Если у вас больше разделов, чем количество потоковых потоков, один поток может читать из нескольких разделов. Но только в пределах разделов порядок последовательности гарантирован.

  for (final KafkaStream<byte[], byte[]> stream : streamList) 
    {
       ConsumerIterator<byte[], byte[]> it= stream.iterator();
       while (it.hasNext()) 
       {
          String message = new String(it.next().message());
          System.out.println(message);
        }
      }
}

Эквивалентной функциональностью в v # 0.11 и далее является метод .poll(). Вы можете установить max.poll.records или max.poll.interval.ms, чтобы установить количество записей на запрос опроса и продолжительность интервала соответственно.

Вы можете найти нового потребителя здесь: https://kafka.apache.org/20/javadoc/org/apache/kafka/clients/consumer/KafkaConsumer.html

0
ответ дан Nishu Tayal 15 April 2019 в 02:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: