Пример ускорения работы Message Hub Kafka Java Console

Я работал с примером кода концентратора сообщений, который можно найти по этой ссылке: https://github.com/ibm-messaging/message-hub-samples

В частности, я пытался увеличить производительность производителя с помощью примера консоли Kafka Java. Я заметил документацию в этом фрагменте кода:

// Synchronously wait for a response from Message Hub / Kafka on every message produced. // For high throughput the future should be handled asynchronously. RecordMetadata recordMetadata = future.get(5000, TimeUnit.MILLISECONDS); producedMessages++;

Я уже отключил спящий режим потока, найденный позже в коде, что также помогло увеличить пропускную способность, но я надеялся, что смогу получить помощь в асинхронной реализации будущего в этом блоке. Заранее спасибо!


person Taylor Allison    schedule 06.02.2017    source источник


Ответы (1)


у вас есть два основных варианта асинхронной обработки результатов запроса на производство

1) использовать перегруженный send с аргументом обратного вызова завершения, который будет вызываться асинхронно: public Future<RecordMetadata> send(ProducerRecord<K, V> record, Callback callback);

при использовании обратного вызова вы можете игнорировать будущее.

2) передать Future в какой-либо другой созданный вами поток, и пусть он проверит будущее на предмет завершения, оставив поток, который вызывает send, свободным для продолжения.

person Edoardo Comar    schedule 07.02.2017
comment
Спасибо за ответ. Я реализую это. - person Taylor Allison; 08.02.2017