Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
Shardingsphere
提交
3ed9d5e9
Shardingsphere
项目概览
apache
/
Shardingsphere
通知
56
Star
3
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Shardingsphere
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
3ed9d5e9
编写于
11月 25, 2017
作者:
T
terrymanu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
remove EtcdWatcher, because only can trigger single listener right now
上级
dfb14db3
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
11 addition
and
54 deletion
+11
-54
sharding-jdbc-orchestration/src/main/java/io/shardingjdbc/orchestration/reg/etcd/EtcdRegistryCenter.java
...ardingjdbc/orchestration/reg/etcd/EtcdRegistryCenter.java
+5
-12
sharding-jdbc-orchestration/src/main/java/io/shardingjdbc/orchestration/reg/etcd/internal/watcher/EtcdWatchStreamObserver.java
...on/reg/etcd/internal/watcher/EtcdWatchStreamObserver.java
+6
-5
sharding-jdbc-orchestration/src/main/java/io/shardingjdbc/orchestration/reg/etcd/internal/watcher/EtcdWatcher.java
.../orchestration/reg/etcd/internal/watcher/EtcdWatcher.java
+0
-37
未找到文件。
sharding-jdbc-orchestration/src/main/java/io/shardingjdbc/orchestration/reg/etcd/EtcdRegistryCenter.java
浏览文件 @
3ed9d5e9
...
...
@@ -15,13 +15,11 @@ import etcdserverpb.Rpc.WatchRequest;
import
etcdserverpb.WatchGrpc
;
import
etcdserverpb.WatchGrpc.WatchStub
;
import
io.grpc.Channel
;
import
io.grpc.stub.StreamObserver
;
import
io.shardingjdbc.orchestration.reg.base.CoordinatorRegistryCenter
;
import
io.shardingjdbc.orchestration.reg.base.EventListener
;
import
io.shardingjdbc.orchestration.reg.etcd.internal.channel.EtcdChannelFactory
;
import
io.shardingjdbc.orchestration.reg.etcd.internal.retry.EtcdRetryEngine
;
import
io.shardingjdbc.orchestration.reg.etcd.internal.watcher.EtcdWatchStreamObserver
;
import
io.shardingjdbc.orchestration.reg.etcd.internal.watcher.EtcdWatcher
;
import
io.shardingjdbc.orchestration.reg.exception.RegException
;
import
mvccpb.Kv.KeyValue
;
...
...
@@ -157,20 +155,15 @@ public final class EtcdRegistryCenter implements CoordinatorRegistryCenter {
public
void
watch
(
final
String
key
,
final
EventListener
eventListener
)
{
String
fullPath
=
getFullPathWithNamespace
(
key
);
WatchCreateRequest
createWatchRequest
=
WatchCreateRequest
.
newBuilder
().
setKey
(
ByteString
.
copyFromUtf8
(
fullPath
)).
setRangeEnd
(
getRangeEnd
(
fullPath
)).
build
();
final
WatchRequest
watchR
equest
=
WatchRequest
.
newBuilder
().
setCreateRequest
(
createWatchRequest
).
build
();
Optional
<
EtcdWatcher
>
watcher
=
etcdRetryEngine
.
execute
(
new
Callable
<
EtcdWatcher
>()
{
final
WatchRequest
r
equest
=
WatchRequest
.
newBuilder
().
setCreateRequest
(
createWatchRequest
).
build
();
etcdRetryEngine
.
execute
(
new
Callable
<
Void
>()
{
@Override
public
EtcdWatcher
call
()
throws
Exception
{
EtcdWatcher
etcdWatcher
=
new
EtcdWatcher
();
StreamObserver
<
WatchRequest
>
requestStream
=
watchStub
.
watch
(
new
EtcdWatchStreamObserver
(
etcdWatcher
));
requestStream
.
onNext
(
watchRequest
);
return
etcdWatcher
;
public
Void
call
()
throws
Exception
{
watchStub
.
watch
(
new
EtcdWatchStreamObserver
(
eventListener
)).
onNext
(
request
);
return
null
;
}
});
if
(
watcher
.
isPresent
())
{
watcher
.
get
().
addEventListener
(
eventListener
);
}
}
private
String
getFullPathWithNamespace
(
final
String
path
)
{
...
...
sharding-jdbc-orchestration/src/main/java/io/shardingjdbc/orchestration/reg/etcd/internal/watcher/EtcdWatchStreamObserver.java
浏览文件 @
3ed9d5e9
...
...
@@ -4,9 +4,10 @@ import etcdserverpb.Rpc;
import
etcdserverpb.Rpc.WatchResponse
;
import
io.grpc.stub.StreamObserver
;
import
io.shardingjdbc.orchestration.reg.base.DataChangedEvent
;
import
io.shardingjdbc.orchestration.reg.base.EventListener
;
import
io.shardingjdbc.orchestration.reg.exception.RegException
;
import
lombok.RequiredArgsConstructor
;
import
mvccpb.Kv
;
import
mvccpb.Kv
.Event
;
/**
* Watch stream observer.
...
...
@@ -16,19 +17,19 @@ import mvccpb.Kv;
@RequiredArgsConstructor
public
final
class
EtcdWatchStreamObserver
implements
StreamObserver
<
WatchResponse
>
{
private
final
E
tcdWatcher
etcdWatch
er
;
private
final
E
ventListener
eventListen
er
;
@Override
public
void
onNext
(
final
Rpc
.
WatchResponse
response
)
{
if
(
response
.
getCanceled
()
||
response
.
getCreated
())
{
return
;
}
for
(
Kv
.
Event
event
:
response
.
getEventsList
())
{
e
tcdWatcher
.
notify
(
new
DataChangedEvent
(
getEventType
(
event
),
event
.
getKv
().
getKey
().
toStringUtf8
(),
event
.
getKv
().
getValue
().
toStringUtf8
()));
for
(
Event
event
:
response
.
getEventsList
())
{
e
ventListener
.
onChange
(
new
DataChangedEvent
(
getEventType
(
event
),
event
.
getKv
().
getKey
().
toStringUtf8
(),
event
.
getKv
().
getValue
().
toStringUtf8
()));
}
}
private
DataChangedEvent
.
Type
getEventType
(
final
Kv
.
Event
event
)
{
private
DataChangedEvent
.
Type
getEventType
(
final
Event
event
)
{
switch
(
event
.
getType
())
{
case
PUT:
return
DataChangedEvent
.
Type
.
UPDATED
;
...
...
sharding-jdbc-orchestration/src/main/java/io/shardingjdbc/orchestration/reg/etcd/internal/watcher/EtcdWatcher.java
已删除
100644 → 0
浏览文件 @
dfb14db3
package
io.shardingjdbc.orchestration.reg.etcd.internal.watcher
;
import
io.shardingjdbc.orchestration.reg.base.DataChangedEvent
;
import
io.shardingjdbc.orchestration.reg.base.EventListener
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* Etcd event watcher.
*
* @author junxiong
*/
public
final
class
EtcdWatcher
{
private
final
List
<
EventListener
>
listeners
=
new
ArrayList
<>();
/**
* Add watcher listener.
*
* @param eventListener WatcherListener
*/
public
void
addEventListener
(
final
EventListener
eventListener
)
{
listeners
.
add
(
eventListener
);
}
/**
* Notify listener when event received.
*
* @param event event
*/
public
void
notify
(
final
DataChangedEvent
event
)
{
for
(
EventListener
listener
:
listeners
)
{
listener
.
onChange
(
event
);
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录