Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
schbrain-canal
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Incidents
Environments
Packages & Registries
Packages & Registries
Package Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
framework
schbrain-canal
Commits
dd744c90
Commit
dd744c90
authored
Apr 21, 2023
by
zhuyunfeng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
no message
parent
ca014a8c
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
23 additions
and
8 deletions
+23
-8
schbrain-canal-client/src/main/java/com/schbrain/canal/client/conf/CanalClientConfig.java
...ava/com/schbrain/canal/client/conf/CanalClientConfig.java
+10
-1
schbrain-canal-client/src/main/java/com/schbrain/canal/client/core/ConnectionFactory.java
...ava/com/schbrain/canal/client/core/ConnectionFactory.java
+4
-0
schbrain-canal-client/src/main/java/com/schbrain/canal/client/core/SimpleCanalClient.java
...ava/com/schbrain/canal/client/core/SimpleCanalClient.java
+9
-6
schbrain-canal-web/pom.xml
schbrain-canal-web/pom.xml
+0
-1
No files found.
schbrain-canal-client/src/main/java/com/schbrain/canal/client/conf/CanalClientConfig.java
View file @
dd744c90
package
com.schbrain.canal.client.conf
;
import
lombok.Data
;
import
lombok.ToString
;
import
java.io.Serializable
;
/**
* CANAL Config
...
...
@@ -9,7 +12,11 @@ import lombok.Data;
* @date 2022/6/16
*/
@Data
public
class
CanalClientConfig
{
@ToString
public
class
CanalClientConfig
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
2850256804111728271L
;
/**
* 连接地址
*/
...
...
@@ -43,5 +50,7 @@ public class CanalClientConfig {
* 批量获取数据条数
*/
private
int
batchSize
=
1000
;
}
schbrain-canal-client/src/main/java/com/schbrain/canal/client/core/ConnectionFactory.java
View file @
dd744c90
...
...
@@ -7,6 +7,7 @@ import com.alibaba.otter.canal.client.impl.ClusterNodeAccessStrategy;
import
com.alibaba.otter.canal.common.zookeeper.ZkClientx
;
import
com.schbrain.canal.client.conf.CanalClientConfig
;
import
com.schbrain.canal.client.exception.CanalClientException
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang.StringUtils
;
import
java.net.InetSocketAddress
;
...
...
@@ -14,6 +15,7 @@ import java.util.ArrayList;
import
java.util.List
;
@Slf4j
public
class
ConnectionFactory
{
/**
...
...
@@ -24,6 +26,7 @@ public class ConnectionFactory {
*/
public
static
CanalConnector
create
(
CanalClientConfig
config
,
String
destination
){
if
(
StringUtils
.
isNotBlank
(
config
.
getAddresses
())){
log
.
info
(
"canal create address destination {} connector by config : {}"
,
destination
,
config
);
List
<
InetSocketAddress
>
inetSocketAddressList
=
new
ArrayList
<>();
String
[]
hosts
=
config
.
getAddresses
().
split
(
","
);
for
(
String
hostInfo:
hosts
)
{
...
...
@@ -32,6 +35,7 @@ public class ConnectionFactory {
}
return
CanalConnectors
.
newClusterConnector
(
inetSocketAddressList
,
destination
,
config
.
getUsername
(),
config
.
getPassword
());
}
else
if
(
StringUtils
.
isNotBlank
(
config
.
getZkHosts
())){
log
.
info
(
"canal create zookeeper destination {} connector by config : {}"
,
destination
,
config
);
return
newClusterConnector
(
config
.
getZkHosts
(),
destination
,
config
.
getUsername
(),
config
.
getPassword
());
}
else
{
new
CanalClientException
(
"zkHosts and addresses cannot all empty"
);
...
...
schbrain-canal-client/src/main/java/com/schbrain/canal/client/core/SimpleCanalClient.java
View file @
dd744c90
...
...
@@ -98,9 +98,7 @@ public class SimpleCanalClient extends AbstractCanalClient {
TableFilter
filter
=
canalEvent
.
getClass
().
getAnnotation
(
TableFilter
.
class
);
if
(
filter
!=
null
&&
StringUtils
.
isNotBlank
(
filter
.
schame
())
&&
StringUtils
.
isNotBlank
(
filter
.
table
())){
//拼接key
String
schame
=
parse
(
filter
.
schame
());
String
table
=
parse
(
filter
.
table
());
String
key
=
schame
+
":"
+
table
;
String
key
=
tableFilterKey
(
filter
);
List
<
CanalEvent
>
filterList
=
MapUtils
.
getObject
(
tableCanalEventMap
,
key
,
new
ArrayList
<>());
filterList
.
add
(
canalEvent
);
tableCanalEventMap
.
put
(
key
,
filterList
);
...
...
@@ -147,9 +145,7 @@ public class SimpleCanalClient extends AbstractCanalClient {
for
(
ResolverCanalEvent
event
:
list
)
{
TableFilter
filter
=
event
.
getClass
().
getAnnotation
(
TableFilter
.
class
);
if
(
filter
!=
null
&&
StringUtils
.
isNotBlank
(
filter
.
schame
())
&&
StringUtils
.
isNotBlank
(
filter
.
table
())){
String
schame
=
parse
(
filter
.
schame
());
String
table
=
parse
(
filter
.
table
());
String
key
=
schame
+
":"
+
table
;
String
key
=
tableFilterKey
(
filter
);
List
<
ResolverCanalEvent
<?>>
filterList
=
MapUtils
.
getObject
(
resolverCanalEvents
,
key
,
new
ArrayList
<>());
filterList
.
add
(
event
);
resolverCanalEvents
.
put
(
key
,
filterList
);
...
...
@@ -159,6 +155,13 @@ public class SimpleCanalClient extends AbstractCanalClient {
}
}
private
String
tableFilterKey
(
TableFilter
filter
){
String
schame
=
parse
(
filter
.
schame
());
String
table
=
parse
(
filter
.
table
());
return
String
.
format
(
"%s:%s"
,
schame
,
table
);
}
/**
* 解析参数值
* @param val
...
...
schbrain-canal-web/pom.xml
View file @
dd744c90
...
...
@@ -46,7 +46,6 @@
</dependencies>
<build>
<finalName>
${artifactId}-${version}
</finalName>
<plugins>
<plugin>
<groupId>
org.springframework.boot
</groupId>
...
...
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