【发布时间】:2016-11-24 00:44:02
【问题描述】:
我有一个 Kafka Consumer 的基本实现。当它在按钮单击时调用 poll() 方法时,我让它正常工作(我们称之为 V1)。
但是,只要我将 poll() 方法放入 while 循环(我们称之为 V2),我就会停止接收消息。
奇怪的是 V1 仍然能够接收到新消息,但 V2 仍然收到一个空的 ConsumerRecords 对象。
我已确定 V1 和 V2 位于不同的 ConsumerGroups。
这里,V2包含如下代码。
并且 V1 删除了 while 循环。否则没有其他区别。
谁能告诉我发生了什么以及为什么?
代码转载如下:
btnButton.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent arg0){
while(true) {
ConsumerRecords<String, String> records = consumerGroupObj.consumerObj.poll(100);
// Trying to insert into DefaultTableModel here for an existing jTable
// Some other processing code
}
}
}
更新:
我在这里注意到了一些东西。这可能不是导致此问题的 poll() 方法。但封闭的eventHandler。请检查上面提供的代码以获取更新。
我注意到的是,在控件退出此 mouseClicked() 方法之前,内部代码所做的更改在 GUI 中是不可见的。
那么,我的新问题是:如何让 Kafka 消费者在由按钮单击事件启动的无限循环中运行?
【问题讨论】:
标签: java apache-kafka kafka-consumer-api