用 KafkaListener批量接收訊息

2021-08-20 04:58:17 字數 1960 閱讀 9082

之前介紹了如何在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主要提供以...