Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
killuaz丶x
SkyWalking
提交
4fda33b1
S
SkyWalking
项目概览
killuaz丶x
/
SkyWalking
与 Fork 源项目一致
Fork自
apache / SkyWalking
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
SkyWalking
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
4fda33b1
编写于
7月 28, 2017
作者:
wu-sheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Support retry when use IF_POSSIBLE strategy.
上级
11ff93ae
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
41 addition
and
4 deletion
+41
-4
apm-commons/apm-datacarrier/src/main/java/org/skywalking/apm/commons/datacarrier/buffer/Channels.java
...g/skywalking/apm/commons/datacarrier/buffer/Channels.java
+15
-1
apm-commons/apm-datacarrier/src/main/java/org/skywalking/apm/commons/datacarrier/partition/IDataPartitioner.java
...g/apm/commons/datacarrier/partition/IDataPartitioner.java
+9
-0
apm-commons/apm-datacarrier/src/main/java/org/skywalking/apm/commons/datacarrier/partition/ProducerThreadPartitioner.java
...mons/datacarrier/partition/ProducerThreadPartitioner.java
+14
-0
apm-commons/apm-datacarrier/src/main/java/org/skywalking/apm/commons/datacarrier/partition/SimpleRollingPartitioner.java
...mmons/datacarrier/partition/SimpleRollingPartitioner.java
+3
-3
未找到文件。
apm-commons/apm-datacarrier/src/main/java/org/skywalking/apm/commons/datacarrier/buffer/Channels.java
浏览文件 @
4fda33b1
...
...
@@ -12,9 +12,11 @@ import org.skywalking.apm.commons.datacarrier.partition.IDataPartitioner;
public
class
Channels
<
T
>
{
private
final
Buffer
<
T
>[]
bufferChannels
;
private
IDataPartitioner
<
T
>
dataPartitioner
;
private
BufferStrategy
strategy
;
public
Channels
(
int
channelSize
,
int
bufferSize
,
IDataPartitioner
<
T
>
partitioner
,
BufferStrategy
strategy
)
{
this
.
dataPartitioner
=
partitioner
;
this
.
strategy
=
strategy
;
bufferChannels
=
new
Buffer
[
channelSize
];
for
(
int
i
=
0
;
i
<
channelSize
;
i
++)
{
bufferChannels
[
i
]
=
new
Buffer
<
T
>(
bufferSize
,
strategy
);
...
...
@@ -23,7 +25,19 @@ public class Channels<T> {
public
boolean
save
(
T
data
)
{
int
index
=
dataPartitioner
.
partition
(
bufferChannels
.
length
,
data
);
return
bufferChannels
[
index
].
save
(
data
);
int
retryCountDown
=
1
;
if
(
BufferStrategy
.
IF_POSSIBLE
.
equals
(
strategy
))
{
int
maxRetryCount
=
dataPartitioner
.
maxRetryCount
();
if
(
maxRetryCount
>
1
)
{
retryCountDown
=
maxRetryCount
;
}
}
for
(;
retryCountDown
>
0
;
retryCountDown
--)
{
if
(
bufferChannels
[
index
].
save
(
data
))
{
return
true
;
}
}
return
false
;
}
public
void
setPartitioner
(
IDataPartitioner
<
T
>
dataPartitioner
)
{
...
...
apm-commons/apm-datacarrier/src/main/java/org/skywalking/apm/commons/datacarrier/partition/IDataPartitioner.java
浏览文件 @
4fda33b1
package
org.skywalking.apm.commons.datacarrier.partition
;
import
org.skywalking.apm.commons.datacarrier.buffer.BufferStrategy
;
/**
* Created by wusheng on 2016/10/25.
*/
public
interface
IDataPartitioner
<
T
>
{
int
partition
(
int
total
,
T
data
);
/**
* @return an integer represents how many times should retry when {@link BufferStrategy#IF_POSSIBLE}.
*
* Less or equal 1, means not support retry.
*/
int
maxRetryCount
();
}
apm-commons/apm-datacarrier/src/main/java/org/skywalking/apm/commons/datacarrier/partition/ProducerThreadPartitioner.java
浏览文件 @
4fda33b1
...
...
@@ -6,8 +6,22 @@ package org.skywalking.apm.commons.datacarrier.partition;
* Created by wusheng on 2016/10/25.
*/
public
class
ProducerThreadPartitioner
<
T
>
implements
IDataPartitioner
<
T
>
{
private
int
retryTime
=
3
;
public
ProducerThreadPartitioner
()
{
}
public
ProducerThreadPartitioner
(
int
retryTime
)
{
this
.
retryTime
=
retryTime
;
}
@Override
public
int
partition
(
int
total
,
T
data
)
{
return
(
int
)
Thread
.
currentThread
().
getId
()
%
total
;
}
@Override
public
int
maxRetryCount
()
{
return
1
;
}
}
apm-commons/apm-datacarrier/src/main/java/org/skywalking/apm/commons/datacarrier/partition/SimpleRollingPartitioner.java
浏览文件 @
4fda33b1
...
...
@@ -14,8 +14,8 @@ public class SimpleRollingPartitioner<T> implements IDataPartitioner<T> {
return
Math
.
abs
(
i
++
%
total
);
}
public
static
void
main
(
String
[]
args
)
{
SimpleRollingPartitioner
s
=
new
SimpleRollingPartitioner
();
System
.
out
.
print
(
s
.
i
++
%
10
)
;
@Override
public
int
maxRetryCount
()
{
return
3
;
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录