Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
3e9cc93b
T
TDengine
项目概览
taosdata
/
TDengine
大约 1 年 前同步成功
通知
1185
Star
22015
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
3e9cc93b
编写于
2月 25, 2023
作者:
H
huolibo
提交者:
GitHub
2月 25, 2023
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
enh(driver): tmq async commit callback (#20114)
上级
90c6641c
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
70 addition
and
0 deletion
+70
-0
source/client/jni/com_taosdata_jdbc_tmq_TMQConnector.h
source/client/jni/com_taosdata_jdbc_tmq_TMQConnector.h
+3
-0
source/client/src/clientJniConnector.c
source/client/src/clientJniConnector.c
+1
-0
source/client/src/clientTmqConnector.c
source/client/src/clientTmqConnector.c
+66
-0
未找到文件。
source/client/jni/com_taosdata_jdbc_tmq_TMQConnector.h
浏览文件 @
3e9cc93b
...
...
@@ -99,6 +99,9 @@ JNIEXPORT jint JNICALL Java_com_taosdata_jdbc_tmq_TMQConnector_tmqCommitSync(JNI
*/
JNIEXPORT
void
JNICALL
Java_com_taosdata_jdbc_tmq_TMQConnector_tmqCommitAsync
(
JNIEnv
*
,
jobject
,
jlong
,
jlong
,
jobject
);
JNIEXPORT
void
JNICALL
Java_com_taosdata_jdbc_tmq_TMQConnector_consumerCommitAsync
(
JNIEnv
*
,
jobject
,
jlong
,
jlong
,
jobject
);
/*
* Class: com_taosdata_jdbc_tmq_TMQConnector
* Method: tmqUnsubscribeImp
...
...
source/client/src/clientJniConnector.c
浏览文件 @
3e9cc93b
...
...
@@ -56,6 +56,7 @@ jmethodID g_createConsumerErrorCallback;
jmethodID
g_topicListCallback
;
jclass
g_consumerClass
;
// deprecated
jmethodID
g_commitCallback
;
void
jniGetGlobalMethod
(
JNIEnv
*
env
)
{
...
...
source/client/src/clientTmqConnector.c
浏览文件 @
3e9cc93b
...
...
@@ -17,6 +17,36 @@
#include "jniCommon.h"
#include "taos.h"
int
__init_tmq
=
0
;
jmethodID
g_offsetCallback
;
void
tmqGlobalMethod
(
JNIEnv
*
env
)
{
// make sure init function executed once
switch
(
atomic_val_compare_exchange_32
(
&
__init_tmq
,
0
,
1
))
{
case
0
:
break
;
case
1
:
do
{
taosMsleep
(
0
);
}
while
(
atomic_load_32
(
&
__init_tmq
)
==
1
);
case
2
:
return
;
}
if
(
g_vm
==
NULL
)
{
(
*
env
)
->
GetJavaVM
(
env
,
&
g_vm
);
}
jclass
offset
=
(
*
env
)
->
FindClass
(
env
,
"com/taosdata/jdbc/tmq/OffsetWaitCallback"
);
jclass
g_offsetCallbackClass
=
(
*
env
)
->
NewGlobalRef
(
env
,
offset
);
g_offsetCallback
=
(
*
env
)
->
GetMethodID
(
env
,
g_offsetCallbackClass
,
"commitCallbackHandler"
,
"(I)V"
);
(
*
env
)
->
DeleteLocalRef
(
env
,
offset
);
atomic_store_32
(
&
__init_tmq
,
2
);
jniDebug
(
"tmq method register finished"
);
}
// deprecated
void
commit_cb
(
tmq_t
*
tmq
,
int32_t
code
,
void
*
param
)
{
JNIEnv
*
env
=
NULL
;
int
status
=
(
*
g_vm
)
->
GetEnv
(
g_vm
,
(
void
**
)
&
env
,
JNI_VERSION_1_6
);
...
...
@@ -40,6 +70,28 @@ void commit_cb(tmq_t *tmq, int32_t code, void *param) {
env
=
NULL
;
}
void
consumer_callback
(
tmq_t
*
tmq
,
int32_t
code
,
void
*
param
)
{
JNIEnv
*
env
=
NULL
;
int
status
=
(
*
g_vm
)
->
GetEnv
(
g_vm
,
(
void
**
)
&
env
,
JNI_VERSION_1_6
);
bool
needDetach
=
false
;
if
(
status
<
0
)
{
if
((
*
g_vm
)
->
AttachCurrentThread
(
g_vm
,
(
void
**
)
&
env
,
NULL
)
!=
0
)
{
return
;
}
needDetach
=
true
;
}
jobject
obj
=
(
jobject
)
param
;
(
*
env
)
->
CallVoidMethod
(
env
,
obj
,
g_offsetCallback
,
code
);
(
*
env
)
->
DeleteGlobalRef
(
env
,
obj
);
param
=
NULL
;
if
(
needDetach
)
{
(
*
g_vm
)
->
DetachCurrentThread
(
g_vm
);
}
env
=
NULL
;
}
JNIEXPORT
jlong
JNICALL
Java_com_taosdata_jdbc_tmq_TMQConnector_tmqConfNewImp
(
JNIEnv
*
env
,
jobject
jobj
)
{
tmq_conf_t
*
conf
=
tmq_conf_new
();
jniGetGlobalMethod
(
env
);
...
...
@@ -201,6 +253,7 @@ JNIEXPORT jint JNICALL Java_com_taosdata_jdbc_tmq_TMQConnector_tmqCommitSync(JNI
return
tmq_commit_sync
(
tmq
,
res
);
}
// deprecated
JNIEXPORT
void
JNICALL
Java_com_taosdata_jdbc_tmq_TMQConnector_tmqCommitAsync
(
JNIEnv
*
env
,
jobject
jobj
,
jlong
jtmq
,
jlong
jres
,
jobject
consumer
)
{
tmq_t
*
tmq
=
(
tmq_t
*
)
jtmq
;
...
...
@@ -213,6 +266,19 @@ JNIEXPORT void JNICALL Java_com_taosdata_jdbc_tmq_TMQConnector_tmqCommitAsync(JN
tmq_commit_async
(
tmq
,
res
,
commit_cb
,
consumer
);
}
JNIEXPORT
void
JNICALL
Java_com_taosdata_jdbc_tmq_TMQConnector_consumerCommitAsync
(
JNIEnv
*
env
,
jobject
jobj
,
jlong
jtmq
,
jlong
jres
,
jobject
offset
)
{
tmqGlobalMethod
(
env
);
tmq_t
*
tmq
=
(
tmq_t
*
)
jtmq
;
if
(
tmq
==
NULL
)
{
jniError
(
"jobj:%p, tmq is closed"
,
jobj
);
return
;
}
TAOS_RES
*
res
=
(
TAOS_RES
*
)
jres
;
offset
=
(
*
env
)
->
NewGlobalRef
(
env
,
offset
);
tmq_commit_async
(
tmq
,
res
,
consumer_callback
,
offset
);
}
JNIEXPORT
jint
JNICALL
Java_com_taosdata_jdbc_tmq_TMQConnector_tmqUnsubscribeImp
(
JNIEnv
*
env
,
jobject
jobj
,
jlong
jtmq
)
{
tmq_t
*
tmq
=
(
tmq_t
*
)
jtmq
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录