我有一個Kafka Consumer的基本實現。當它調用按鈕單擊的方法(我們稱之爲V1)時,我可以正確調用方法。Kafka Consumer poll()在while循環中使用時返回空集
但只要我放置while
循環內的poll()
方法(我們稱之爲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
}
}
}
更新:
我發現了一些在這裏。它可能不是導致此問題的方法。但封閉的eventHandler。請檢查上面提供的代碼以獲取更新。
我注意到的是,直到控件退出這個方法,GUI中的代碼所做的更改在內部看不到。
所以,我的新問題:如何使一個卡夫卡使用者在由按鈕單擊事件啓動的無限循環中運行?
我在'poll()'中使用的超時時間外加了一個超時時間。此外,增加和減少'poll()'使用的超時,範圍從100ms到5000ms。沒有效果。我認爲這與通過事件處理程序的控制流有關。 – GaidinD