@@ -291,6 +291,39 @@ JNIEXPORT jint JNICALL Java_com_taosdata_jdbc_tmq_TMQConnector_tmqCommitSync(JNI
291
291
TAOS_RES * res = (TAOS_RES * )jres ;
292
292
return tmq_commit_sync (tmq , res );
293
293
}
294
+ JNIEXPORT jint JNICALL Java_com_taosdata_jdbc_tmq_TMQConnector_tmqCommitAllSync (JNIEnv * env , jobject jobj , jlong jtmq ) {
295
+ tmq_t * tmq = (tmq_t * )jtmq ;
296
+ if (tmq == NULL ) {
297
+ jniError ("jobj:%p, tmq is closed" , jobj );
298
+ return TMQ_CONSUMER_NULL ;
299
+ }
300
+
301
+ return tmq_commit_sync (tmq , NULL );
302
+ }
303
+
304
+ JNIEXPORT jint JNICALL Java_com_taosdata_jdbc_tmq_TMQConnector_tmqCommitOffsetSyncImp (JNIEnv * env , jobject jobj ,
305
+ jlong jtmq , jstring jtopic ,
306
+ jint vgId , jlong offset ) {
307
+ tmq_t * tmq = (tmq_t * )jtmq ;
308
+ if (tmq == NULL ) {
309
+ jniDebug ("jobj:%p, tmq is closed" , jobj );
310
+ return TMQ_CONSUMER_NULL ;
311
+ }
312
+
313
+ if (jtopic == NULL ) {
314
+ jniDebug ("jobj:%p, topic is null" , jobj );
315
+ return TMQ_TOPIC_NULL ;
316
+ }
317
+ const char * topicName = (* env )-> GetStringUTFChars (env , jtopic , NULL );
318
+
319
+ int code = tmq_commit_offset_sync (tmq , topicName , vgId , offset );
320
+ if (code != TSDB_CODE_SUCCESS ) {
321
+ jniError ("jobj:%p, tmq commit offset error, code:%d, msg:%s" , jobj , code , tmq_err2str (code ));
322
+ }
323
+
324
+ (* env )-> ReleaseStringUTFChars (env , jtopic , topicName );
325
+ return code ;
326
+ }
294
327
295
328
// deprecated
296
329
JNIEXPORT void JNICALL Java_com_taosdata_jdbc_tmq_TMQConnector_tmqCommitAsync (JNIEnv * env , jobject jobj , jlong jtmq ,
@@ -319,6 +352,27 @@ JNIEXPORT void JNICALL Java_com_taosdata_jdbc_tmq_TMQConnector_consumerCommitAsy
319
352
tmq_commit_async (tmq , res , consumer_callback , offset );
320
353
}
321
354
355
+ JNIEXPORT void JNICALL Java_com_taosdata_jdbc_tmq_TMQConnector_consumerCommitAllAsync (JNIEnv * env , jobject jobj ,
356
+ jlong jtmq , jobject offset ) {
357
+ tmqGlobalMethod (env );
358
+ tmq_t * tmq = (tmq_t * )jtmq ;
359
+
360
+ offset = (* env )-> NewGlobalRef (env , offset );
361
+ tmq_commit_async (tmq , NULL , consumer_callback , offset );
362
+ }
363
+
364
+ JNIEXPORT void JNICALL Java_com_taosdata_jdbc_tmq_TMQConnector_consumerCommitOffsetAsync (JNIEnv * env , jobject jobj ,
365
+ jlong jtmq , jstring jtopic ,
366
+ jint vgId , jlong offset ,
367
+ jobject callback ) {
368
+ tmqGlobalMethod (env );
369
+ tmq_t * tmq = (tmq_t * )jtmq ;
370
+ const char * topicName = (* env )-> GetStringUTFChars (env , jtopic , NULL );
371
+
372
+ callback = (* env )-> NewGlobalRef (env , callback );
373
+ tmq_commit_offset_async (tmq , topicName , vgId , offset , consumer_callback , callback );
374
+ }
375
+
322
376
JNIEXPORT jint JNICALL Java_com_taosdata_jdbc_tmq_TMQConnector_tmqUnsubscribeImp (JNIEnv * env , jobject jobj ,
323
377
jlong jtmq ) {
324
378
tmq_t * tmq = (tmq_t * )jtmq ;
@@ -497,9 +551,9 @@ JNIEXPORT jint JNICALL Java_com_taosdata_jdbc_tmq_TMQConnector_tmqGetTopicAssign
497
551
int32_t res = tmq_get_topic_assignment (tmq , topicName , & pAssign , & numOfAssignment );
498
552
499
553
if (res != TSDB_CODE_SUCCESS ) {
500
- (* env )-> ReleaseStringUTFChars (env , jtopic , topicName );
501
554
jniError ("jobj:%p, tmq get topic assignment error, topic:%s, code:%d, msg:%s" , jobj , topicName , res ,
502
555
tmq_err2str (res ));
556
+ (* env )-> ReleaseStringUTFChars (env , jtopic , topicName );
503
557
tmq_free_assignment (pAssign );
504
558
return (jint )res ;
505
559
}
@@ -518,3 +572,55 @@ JNIEXPORT jint JNICALL Java_com_taosdata_jdbc_tmq_TMQConnector_tmqGetTopicAssign
518
572
tmq_free_assignment (pAssign );
519
573
return JNI_SUCCESS ;
520
574
}
575
+
576
+ JNIEXPORT jlong JNICALL Java_com_taosdata_jdbc_tmq_TMQConnector_tmqCommittedImp (JNIEnv * env , jobject jobj , jlong jtmq ,
577
+ jstring jtopic , jint vgId ) {
578
+ tmq_t * tmq = (tmq_t * )jtmq ;
579
+ if (tmq == NULL ) {
580
+ jniDebug ("jobj:%p, tmq is closed" , jobj );
581
+ return TMQ_CONSUMER_NULL ;
582
+ }
583
+
584
+ if (jtopic == NULL ) {
585
+ jniDebug ("jobj:%p, topic is null" , jobj );
586
+ return TMQ_TOPIC_NULL ;
587
+ }
588
+
589
+ const char * topicName = (* env )-> GetStringUTFChars (env , jtopic , NULL );
590
+
591
+ int64_t offset = tmq_committed (tmq , topicName , vgId );
592
+
593
+ if (offset < JNI_SUCCESS && offset != -2147467247 ) {
594
+ jniError ("jobj:%p, tmq get committed offset error, topic:%s, vgId:%d, code:0x%" PRIx64 ", msg:%s" , jobj , topicName ,
595
+ vgId , offset , tmq_err2str (offset ));
596
+ }
597
+
598
+ (* env )-> ReleaseStringUTFChars (env , jtopic , topicName );
599
+ return (jlong )offset ;
600
+ }
601
+
602
+ JNIEXPORT jlong JNICALL Java_com_taosdata_jdbc_tmq_TMQConnector_tmqPositionImp (JNIEnv * env , jobject jobj , jlong jtmq ,
603
+ jstring jtopic , jint vgId ) {
604
+ tmq_t * tmq = (tmq_t * )jtmq ;
605
+ if (tmq == NULL ) {
606
+ jniDebug ("jobj:%p, tmq is closed" , jobj );
607
+ return TMQ_CONSUMER_NULL ;
608
+ }
609
+
610
+ if (jtopic == NULL ) {
611
+ jniDebug ("jobj:%p, topic is null" , jobj );
612
+ return TMQ_TOPIC_NULL ;
613
+ }
614
+
615
+ const char * topicName = (* env )-> GetStringUTFChars (env , jtopic , NULL );
616
+
617
+ int64_t offset = tmq_position (tmq , topicName , vgId );
618
+
619
+ if (offset < JNI_SUCCESS ) {
620
+ jniError ("jobj:%p, tmq get position error, topic:%s, vgId:%d, code:0x%" PRIx64 ", msg:%s" , jobj , topicName , vgId ,
621
+ offset , tmq_err2str (offset ));
622
+ }
623
+
624
+ (* env )-> ReleaseStringUTFChars (env , jtopic , topicName );
625
+ return (jlong )offset ;
626
+ }
0 commit comments