1
- const { Kafka, logLevel } = require ( '../..' ) . KafkaJS ;
1
+ const { Kafka } = require ( '../..' ) . KafkaJS
2
2
//const { Kafka } = require('kafkajs')
3
3
4
4
async function consumerStart ( ) {
5
- let consumer ;
6
- var stopped = false ;
5
+ let consumer ;
6
+ var stopped = false ;
7
7
8
- const kafka = new Kafka ( {
9
- brokers : [ 'localhost:9092' ] ,
10
- } ) ;
8
+ const kafka = new Kafka ( {
9
+ kafkaJs : {
10
+ brokers : [ 'localhost:9092' ] ,
11
+ ssl : true ,
12
+ connectionTimeout : 5000 ,
13
+ sasl : {
14
+ mechanism : 'plain' ,
15
+ username : '<fill>' ,
16
+ password : '<fill>' ,
17
+ } ,
18
+ }
19
+ } ) ;
11
20
12
- consumer = kafka . consumer ( {
13
- groupId : 'test-group22' + Math . random ( ) ,
21
+ consumer = kafka . consumer ( {
22
+ kafkaJs : {
23
+ groupId : 'test-group' ,
24
+ autoCommit : false ,
14
25
rebalanceListener : {
15
26
onPartitionsAssigned : async ( assignment ) => {
16
27
console . log ( `Assigned partitions ${ JSON . stringify ( assignment ) } ` ) ;
@@ -24,95 +35,90 @@ async function consumerStart() {
24
35
}
25
36
}
26
37
} ,
27
- rdKafka : {
28
- globalConfig : {
29
- 'debug' : 'conf' ,
30
- 'enable.auto.commit' : false ,
31
- 'auto.offset.reset' : 'error'
32
- } ,
33
- topicConfig : {
34
- } ,
35
- }
36
- } ) ;
38
+ } ,
39
+
40
+ /* Properties from librdkafka can also be used */
41
+ 'auto.commit.interval.ms' : 6000 ,
42
+ } ) ;
43
+
44
+ await consumer . connect ( ) ;
45
+ console . log ( "Connected successfully" ) ;
37
46
38
- await consumer . connect ( ) ;
39
- console . log ( "Connected successfully" ) ;
47
+ await consumer . subscribe ( {
48
+ topics : [
49
+ "topic2"
50
+ ]
51
+ } )
40
52
41
- await consumer . subscribe ( {
42
- topics : [
43
- "test-topic"
44
- ]
45
- } )
53
+ // Batch consumer, commit and seek example
54
+ var batch = 0 ;
55
+ consumer . run ( {
56
+ eachMessage : async ( { topic, partition, message } ) => {
57
+ console . log ( {
58
+ topic,
59
+ partition,
60
+ offset : message . offset ,
61
+ key : message . key ?. toString ( ) ,
62
+ value : message . value . toString ( ) ,
63
+ } )
46
64
47
- // Batch consumer, commit and seek example
48
- var batch = 0 ;
49
- consumer . run ( {
50
- eachMessage : async ( { topic, partition, message } ) => {
51
- console . log ( {
65
+ if ( ++ batch % 100 == 0 ) {
66
+ await consumer . seek ( {
52
67
topic,
53
68
partition,
54
- offset : message . offset ,
55
- key : message . key ?. toString ( ) ,
56
- value : message . value . toString ( ) ,
57
- } )
58
-
59
- if ( ++ batch % 100 == 0 ) {
60
- await consumer . seek ( {
61
- topic,
62
- partition,
63
- offset : - 2
64
- } ) ;
65
- await consumer . commitOffsets ( ) ;
66
- batch = 0 ;
67
- }
68
- } ,
69
- } ) ;
69
+ offset : - 2
70
+ } ) ;
71
+ await consumer . commitOffsets ( ) ;
72
+ batch = 0 ;
73
+ }
74
+ } ,
75
+ } ) ;
70
76
71
- // Pause/Resume example
72
- const pauseResumeLoop = async ( ) => {
73
- let paused = false ;
74
- let ticks = 0 ;
75
- while ( ! stopped ) {
76
- await new Promise ( ( resolve ) => setTimeout ( resolve , 100 ) ) ;
77
- if ( stopped )
78
- break ;
77
+ // Pause/Resume example
78
+ const pauseResumeLoop = async ( ) => {
79
+ let paused = false ;
80
+ let ticks = 0 ;
81
+ while ( ! stopped ) {
82
+ await new Promise ( ( resolve ) => setTimeout ( resolve , 100 ) ) ;
83
+ if ( stopped )
84
+ break ;
79
85
80
- ticks ++ ;
81
- if ( ticks == 200 ) {
82
- ticks = 0 ;
83
- const assignment = consumer . assignment ( ) ;
84
- if ( paused ) {
85
- console . log ( `Resuming partitions ${ JSON . stringify ( assignment ) } ` )
86
- consumer . resume ( assignment ) ;
87
- } else {
88
- console . log ( `Pausing partitions ${ JSON . stringify ( assignment ) } ` ) ;
89
- consumer . pause ( assignment ) ;
90
- }
91
- paused = ! paused ;
86
+ ticks ++ ;
87
+ if ( ticks == 200 ) {
88
+ ticks = 0 ;
89
+ const assignment = consumer . assignment ( ) ;
90
+ if ( paused ) {
91
+ console . log ( `Resuming partitions ${ JSON . stringify ( assignment ) } ` )
92
+ consumer . resume ( assignment ) ;
93
+ } else {
94
+ console . log ( `Pausing partitions ${ JSON . stringify ( assignment ) } ` ) ;
95
+ consumer . pause ( assignment ) ;
92
96
}
97
+ paused = ! paused ;
93
98
}
94
99
}
100
+ }
95
101
96
- if ( consumer . assignment ) {
97
- // KafkaJS doesn't have assignment()
98
- pauseResumeLoop ( )
99
- }
102
+ if ( consumer . assignment ( ) ) {
103
+ // KafkaJS doesn't have assignment()
104
+ pauseResumeLoop ( )
105
+ }
100
106
101
- // Disconnect example
102
- const disconnect = ( ) => {
103
- process . off ( 'SIGINT' , disconnect ) ;
104
- process . off ( 'SIGTERM' , disconnect ) ;
105
- stopped = true ;
106
- consumer . commitOffsets ( )
107
+ // Disconnect example
108
+ const disconnect = ( ) => {
109
+ process . off ( 'SIGINT' , disconnect ) ;
110
+ process . off ( 'SIGTERM' , disconnect ) ;
111
+ stopped = true ;
112
+ consumer . commitOffsets ( )
107
113
. finally ( ( ) =>
108
114
consumer . disconnect ( )
109
115
)
110
116
. finally ( ( ) =>
111
117
console . log ( "Disconnected successfully" )
112
118
) ;
113
- }
114
- process . on ( 'SIGINT' , disconnect ) ;
115
- process . on ( 'SIGTERM' , disconnect ) ;
119
+ }
120
+ process . on ( 'SIGINT' , disconnect ) ;
121
+ process . on ( 'SIGTERM' , disconnect ) ;
116
122
}
117
123
118
124
consumerStart ( )
0 commit comments