Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
cdc-engine2
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
黄营
cdc-engine2
Commits
49d964a3
Commit
49d964a3
authored
Nov 13, 2024
by
y1sa
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新增失败回调
parent
56eb47c3
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
36 additions
and
23 deletions
+36
-23
AbstractCdcEngine.java
...main/java/com/tbyf/cdcengine2/core/AbstractCdcEngine.java
+30
-23
ChangeHandler.java
...src/main/java/com/tbyf/cdcengine2/core/ChangeHandler.java
+6
-0
No files found.
core/src/main/java/com/tbyf/cdcengine2/core/AbstractCdcEngine.java
View file @
49d964a3
...
@@ -41,7 +41,9 @@ public abstract class AbstractCdcEngine<T extends AbstractCdcEngine<T>> {
...
@@ -41,7 +41,9 @@ public abstract class AbstractCdcEngine<T extends AbstractCdcEngine<T>> {
private
volatile
boolean
running
=
true
;
private
volatile
boolean
running
=
true
;
private
volatile
List
<
ChangeListener
>
changeListeners
=
new
ArrayList
<>();
private
ChangeHandler
changeHandler
;
private
Runnable
errorHandler
;
public
AbstractCdcEngine
()
{
public
AbstractCdcEngine
()
{
debeziumProps
.
setProperty
(
Constants
.
DATABASE_SERVER_NAME_PROP
,
Constants
.
DATABASE_SERVER_NAME_VALUE
);
debeziumProps
.
setProperty
(
Constants
.
DATABASE_SERVER_NAME_PROP
,
Constants
.
DATABASE_SERVER_NAME_VALUE
);
...
@@ -49,42 +51,47 @@ public abstract class AbstractCdcEngine<T extends AbstractCdcEngine<T>> {
...
@@ -49,42 +51,47 @@ public abstract class AbstractCdcEngine<T extends AbstractCdcEngine<T>> {
debeziumProps
.
setProperty
(
"name"
,
getClass
().
getSimpleName
());
debeziumProps
.
setProperty
(
"name"
,
getClass
().
getSimpleName
());
}
}
public
void
addListener
(
ChangeListener
listener
)
{
@SuppressWarnings
(
"unchecked"
)
ArrayList
<
ChangeListener
>
changeListeners
=
new
ArrayList
<>(
this
.
changeListeners
);
private
T
self
()
{
changeListeners
.
add
(
listener
);
return
(
T
)
this
;
this
.
changeListeners
=
changeListeners
;
}
public
T
onChange
(
ChangeHandler
changeHandler
)
{
if
(
changeHandler
==
null
)
{
throw
new
IllegalArgumentException
(
"changeHandler must not be null"
);
}
this
.
changeHandler
=
changeHandler
;
return
self
();
}
public
T
onError
(
Runnable
errorHandler
)
{
this
.
errorHandler
=
errorHandler
;
return
self
();
}
}
public
void
start
()
{
public
void
start
()
{
synchronized
(
startupStopMonitor
)
{
synchronized
(
startupStopMonitor
)
{
logger
.
info
(
"开始启动CDC引擎..."
);
logger
.
info
(
"开始启动CDC引擎..."
);
if
(
this
.
changeHandler
==
null
)
{
throw
new
IllegalStateException
(
"changeHandler not set"
);
}
this
.
running
=
true
;
this
.
running
=
true
;
consumerThread
=
new
Thread
(()
->
{
consumerThread
=
new
Thread
(()
->
{
List
<
ChangeListener
>
changeListeners
=
null
;
while
(
running
)
{
while
(
running
)
{
changeListeners
=
this
.
changeListeners
;
try
{
try
{
List
<
ChangedRecord
>
buffer
=
new
ArrayList
<>();
List
<
ChangedRecord
>
buffer
=
new
ArrayList
<>();
recordQueue
.
drainTo
(
buffer
);
recordQueue
.
drainTo
(
buffer
);
if
(
buffer
.
isEmpty
())
{
if
(
buffer
.
isEmpty
())
{
ChangedRecord
record
=
recordQueue
.
take
();
ChangedRecord
record
=
recordQueue
.
take
();
try
{
try
{
for
(
ChangeListener
listener
:
changeListeners
)
{
this
.
changeHandler
.
handle
(
record
);
if
(
listener
.
supports
(
record
.
schema
(),
record
.
table
()))
{
listener
.
onChange
(
record
);
}
}
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
logger
.
error
(
"处理{}时发生了异常"
,
record
,
e
);
logger
.
error
(
"处理{}时发生了异常"
,
record
,
e
);
}
}
}
else
{
}
else
{
for
(
ChangedRecord
record
:
buffer
)
{
for
(
ChangedRecord
record
:
buffer
)
{
try
{
try
{
for
(
ChangeListener
listener
:
changeListeners
)
{
changeHandler
.
handle
(
record
);
if
(
listener
.
supports
(
record
.
schema
(),
record
.
table
()))
{
listener
.
onChange
(
record
);
}
}
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
logger
.
error
(
"处理{}时发生了异常"
,
record
,
e
);
logger
.
error
(
"处理{}时发生了异常"
,
record
,
e
);
}
}
...
@@ -98,14 +105,9 @@ public abstract class AbstractCdcEngine<T extends AbstractCdcEngine<T>> {
...
@@ -98,14 +105,9 @@ public abstract class AbstractCdcEngine<T extends AbstractCdcEngine<T>> {
List
<
ChangedRecord
>
buffer
=
new
ArrayList
<>();
List
<
ChangedRecord
>
buffer
=
new
ArrayList
<>();
recordQueue
.
drainTo
(
buffer
);
recordQueue
.
drainTo
(
buffer
);
if
(!
buffer
.
isEmpty
())
{
if
(!
buffer
.
isEmpty
())
{
changeListeners
=
this
.
changeListeners
;
for
(
ChangedRecord
record
:
buffer
)
{
for
(
ChangedRecord
record
:
buffer
)
{
try
{
try
{
for
(
ChangeListener
listener
:
changeListeners
)
{
changeHandler
.
handle
(
record
);
if
(
listener
.
supports
(
record
.
schema
(),
record
.
table
()))
{
listener
.
onChange
(
record
);
}
}
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
logger
.
error
(
"处理{}时发生了异常"
,
record
,
e
);
logger
.
error
(
"处理{}时发生了异常"
,
record
,
e
);
}
}
...
@@ -166,6 +168,11 @@ public abstract class AbstractCdcEngine<T extends AbstractCdcEngine<T>> {
...
@@ -166,6 +168,11 @@ public abstract class AbstractCdcEngine<T extends AbstractCdcEngine<T>> {
consumerThread
.
interrupt
();
consumerThread
.
interrupt
();
}
}
this
.
consumerThread
=
null
;
this
.
consumerThread
=
null
;
Runnable
errorHandler
=
this
.
errorHandler
;
if
(
errorHandler
!=
null
)
{
errorHandler
.
run
();
}
}
}
}
}
...
...
core/src/main/java/com/tbyf/cdcengine2/core/ChangeHandler.java
0 → 100644
View file @
49d964a3
package
com
.
tbyf
.
cdcengine2
.
core
;
public
interface
ChangeHandler
{
void
handle
(
ChangedRecord
record
);
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment