我一直在使用此链接中的Message Hub示例代码: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++;
我已经关闭了稍后在代码中找到的线程睡眠,这也有助于提高吞吐量,但我希望我能在这个块中异步实现未来得到一些帮助。提前致谢!
答案 0 :(得分:2)
您有两个基本选项可以异步处理产品请求的结果
1)使用带有完成回调参数的重载send
,该参数将异步调用:
public Future<RecordMetadata> send(ProducerRecord<K, V> record, Callback callback);
如果使用回调,您可能会忽略未来。
2)将Future
传递给您创建的其他线程,让它检查未来是否完成,同时让调用send
的线程可以继续进行。