之前介紹了如何在springboot中整合kafka,但是預設情況下,@kafkalistener都是一條一條消費,如果想要一次消費乙個批量的話,我們都知道,在kafka原生的api可以通過poll(num)來獲取一次獲取num條訊息:
那麼使用在springboot中使用@kafkalistener能否實現批量監聽呢?
看了spring-kafka的官方文件介紹,可以知道自1.1版本之後,@kafkalistener開始支援批量消費,只需要設定batchlistener引數為true
下面是我在專案中使用到的方法:
1
2
3
4
5
6
7
8
9
10
@bean
public
kafkalistenercontaine***ctory
<
?>
batchfactory()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@bean
public
map<
string
,object
>
consumerconfigs()
開始監聽,批量消費後採用jpa的方式批量寫入資料庫,這裡containe***ctory = 「batchfactory」要指定為批量消費
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
@kafkalistener
(topics
="$"
,containe***ctory
="batchfactory"
)
public
void
listen
(list
<
consumerrecord
,?>
>
records
,acknowledgment
ack)
catch
(ioexceptione)
if(null
!=b_zdrygk_zdryxx_fj_hcb1
)
}
trycatch
(exceptione)
finally
}執行結果如下圖,每批消費100條訊息:
註解 KafkaListener批量接收訊息
之前介紹了如何在springboot中整合kafka,但是預設情況下,kafkalistener都是一條一條消費,如果想要一次消費乙個批量的話,我們都知道,在kafka原生的api可以通過poll num 來獲取一次獲取num條訊息 那麼使用在springboot中使用 kafkalistener能...
PreparedStatement 事物批量更新
更新資料庫已有的customer資訊 param list return public int updateexistsinfo listupdatelist int tt pstmt.executebatch system.out.println update tt.length 提交,設定事務初...
Spring JdbcTemplate之批量插入
jdbctemplate簡介 spring對資料庫的操作在jdbc上面做了深層次的封裝,使用spring的注入功能,可以把datasource註冊到jdbctemplate之中。jdbctemplate位於spring jdbc 5.0.6.release.jar jdbctemplate主要提供以...