Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦中观雨
cat
提交
7ae45388
C
cat
项目概览
梦中观雨
/
cat
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
cat
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
7ae45388
编写于
3月 14, 2012
作者:
Y
You Yong
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
modify the cat-core, change the tcp send mode
上级
f1e47b9c
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
121 addition
and
16 deletion
+121
-16
cat-consumer/src/main/java/com/dianping/cat/consumer/build/ComponentsConfigurator.java
...m/dianping/cat/consumer/build/ComponentsConfigurator.java
+1
-3
cat-consumer/src/main/resources/META-INF/plexus/components.xml
...onsumer/src/main/resources/META-INF/plexus/components.xml
+0
-5
cat-core/src/main/java/com/dianping/cat/build/ComponentsConfigurator.java
...n/java/com/dianping/cat/build/ComponentsConfigurator.java
+7
-2
cat-core/src/main/java/com/dianping/cat/message/io/DefaultMessageQueue.java
...java/com/dianping/cat/message/io/DefaultMessageQueue.java
+52
-0
cat-core/src/main/java/com/dianping/cat/message/io/TcpSocketSender.java
...ain/java/com/dianping/cat/message/io/TcpSocketSender.java
+29
-1
cat-core/src/main/java/com/dianping/cat/message/spi/MessageQueue.java
.../main/java/com/dianping/cat/message/spi/MessageQueue.java
+2
-1
cat-core/src/main/java/com/dianping/cat/message/spi/internal/DefaultMessageTree.java
...dianping/cat/message/spi/internal/DefaultMessageTree.java
+9
-3
cat-core/src/main/resources/META-INF/plexus/components.xml
cat-core/src/main/resources/META-INF/plexus/components.xml
+13
-0
cat-core/src/test/java/com/dianping/cat/message/io/TcpSocketTestConfigurator.java
...om/dianping/cat/message/io/TcpSocketTestConfigurator.java
+3
-1
cat-core/src/test/resources/com/dianping/cat/message/io/TcpSocketTest.xml
...t/resources/com/dianping/cat/message/io/TcpSocketTest.xml
+5
-0
未找到文件。
cat-consumer/src/main/java/com/dianping/cat/consumer/build/ComponentsConfigurator.java
浏览文件 @
7ae45388
...
...
@@ -8,7 +8,6 @@ import java.util.List;
import
com.dianping.cat.consumer.AnalyzerFactory
;
import
com.dianping.cat.consumer.DefaultAnalyzerFactory
;
import
com.dianping.cat.consumer.DefaultMessageQueue
;
import
com.dianping.cat.consumer.RealtimeConsumer
;
import
com.dianping.cat.consumer.ip.IpAnalyzer
;
import
com.dianping.cat.consumer.problem.ProblemAnalyzer
;
...
...
@@ -16,6 +15,7 @@ import com.dianping.cat.consumer.problem.handler.FailureHandler;
import
com.dianping.cat.consumer.problem.handler.Handler
;
import
com.dianping.cat.consumer.problem.handler.LongUrlHandler
;
import
com.dianping.cat.consumer.transaction.TransactionAnalyzer
;
import
com.dianping.cat.message.io.DefaultMessageQueue
;
import
com.dianping.cat.message.spi.MessageConsumer
;
import
com.dianping.cat.message.spi.MessagePathBuilder
;
import
com.dianping.cat.message.spi.MessageQueue
;
...
...
@@ -28,8 +28,6 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
public
List
<
Component
>
defineComponents
()
{
List
<
Component
>
all
=
new
ArrayList
<
Component
>();
all
.
add
(
C
(
MessageQueue
.
class
,
DefaultMessageQueue
.
class
).
is
(
PER_LOOKUP
));
all
.
add
(
C
(
AnalyzerFactory
.
class
,
DefaultAnalyzerFactory
.
class
));
all
.
add
(
C
(
MessageConsumer
.
class
,
"realtime"
,
RealtimeConsumer
.
class
)
//
...
...
cat-consumer/src/main/resources/META-INF/plexus/components.xml
浏览文件 @
7ae45388
<plexus>
<components>
<component>
<role>
com.dianping.cat.message.spi.MessageQueue
</role>
<implementation>
com.dianping.cat.consumer.DefaultMessageQueue
</implementation>
<instantiation-strategy>
per-lookup
</instantiation-strategy>
</component>
<component>
<role>
com.dianping.cat.consumer.AnalyzerFactory
</role>
<implementation>
com.dianping.cat.consumer.DefaultAnalyzerFactory
</implementation>
...
...
cat-core/src/main/java/com/dianping/cat/build/ComponentsConfigurator.java
浏览文件 @
7ae45388
...
...
@@ -7,6 +7,7 @@ import com.dianping.cat.message.MessageProducer;
import
com.dianping.cat.message.internal.DefaultMessageManager
;
import
com.dianping.cat.message.internal.DefaultMessageProducer
;
import
com.dianping.cat.message.internal.MessageIdFactory
;
import
com.dianping.cat.message.io.DefaultMessageQueue
;
import
com.dianping.cat.message.io.DefaultTransportManager
;
import
com.dianping.cat.message.io.InMemoryQueue
;
import
com.dianping.cat.message.io.InMemoryReceiver
;
...
...
@@ -22,6 +23,7 @@ import com.dianping.cat.message.spi.MessageConsumerRegistry;
import
com.dianping.cat.message.spi.MessageHandler
;
import
com.dianping.cat.message.spi.MessageManager
;
import
com.dianping.cat.message.spi.MessagePathBuilder
;
import
com.dianping.cat.message.spi.MessageQueue
;
import
com.dianping.cat.message.spi.MessageStorage
;
import
com.dianping.cat.message.spi.consumer.DummyConsumer
;
import
com.dianping.cat.message.spi.consumer.DumpToHtmlConsumer
;
...
...
@@ -49,7 +51,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
all
.
add
(
C
(
MessageIdFactory
.
class
));
all
.
add
(
C
(
MessagePathBuilder
.
class
,
DefaultMessagePathBuilder
.
class
)
//
.
req
(
MessageManager
.
class
));
all
.
add
(
C
(
MessageStorage
.
class
,
"html"
,
DefaultMessageStorage
.
class
)
//
.
req
(
MessagePathBuilder
.
class
)
//
.
req
(
MessageCodec
.
class
,
"html"
));
...
...
@@ -60,9 +62,12 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
all
.
add
(
C
(
MessageConsumerRegistry
.
class
,
DefaultMessageConsumerRegistry
.
class
)
//
.
req
(
MessageConsumer
.
class
,
new
String
[]
{
DummyConsumer
.
ID
},
"m_consumers"
));
all
.
add
(
C
(
MessageQueue
.
class
,
DefaultMessageQueue
.
class
).
config
(
E
(
"size"
).
value
(
"1000"
)).
is
(
PER_LOOKUP
));
all
.
add
(
C
(
MessageSender
.
class
,
"tcp-socket"
,
TcpSocketSender
.
class
)
//
.
is
(
PER_LOOKUP
)
//
.
req
(
MessageCodec
.
class
,
"plain-text"
));
.
req
(
MessageCodec
.
class
,
"plain-text"
,
"m_codec"
)
//
.
req
(
MessageQueue
.
class
,
"default"
,
"m_queue"
));
all
.
add
(
C
(
MessageReceiver
.
class
,
"tcp-socket"
,
TcpSocketReceiver
.
class
)
//
.
is
(
PER_LOOKUP
)
//
.
req
(
MessageCodec
.
class
,
"plain-text"
));
...
...
cat-co
nsumer/src/main/java/com/dianping/cat/consumer
/DefaultMessageQueue.java
→
cat-co
re/src/main/java/com/dianping/cat/message/io
/DefaultMessageQueue.java
浏览文件 @
7ae45388
package
com.dianping.cat.
consumer
;
package
com.dianping.cat.
message.io
;
import
java.util.concurrent.BlockingQueue
;
import
java.util.concurrent.LinkedBlockingQueue
;
import
java.util.concurrent.TimeUnit
;
import
org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable
;
import
org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException
;
import
com.dianping.cat.message.spi.MessageQueue
;
import
com.dianping.cat.message.spi.MessageTree
;
import
com.site.lookup.annotation.Inject
;
public
class
DefaultMessageQueue
implements
MessageQueue
,
Initializable
{
private
BlockingQueue
<
MessageTree
>
m_queue
;
/**
* @author yong.you
* @since Jan 5, 2012
*/
public
class
DefaultMessageQueue
implements
MessageQueue
{
private
BlockingQueue
<
MessageTree
>
queue
=
new
LinkedBlockingQueue
<
MessageTree
>();
@Inject
private
int
m_size
;
@Override
public
void
initialize
()
throws
InitializationException
{
if
(
m_size
>
0
)
{
m_queue
=
new
LinkedBlockingQueue
<
MessageTree
>(
m_size
);
}
else
{
m_queue
=
new
LinkedBlockingQueue
<
MessageTree
>();
}
}
@Override
public
MessageTree
poll
()
{
try
{
return
queue
.
poll
(
1
,
TimeUnit
.
MILLISECONDS
);
return
m_queue
.
poll
(
5
,
TimeUnit
.
MILLISECONDS
);
}
catch
(
InterruptedException
e
)
{
return
null
;
}
}
@Override
public
void
offer
(
MessageTree
tree
)
{
queue
.
add
(
tree
);
public
boolean
offer
(
MessageTree
tree
)
{
return
m_queue
.
offer
(
tree
);
}
@Override
public
int
size
()
{
return
queue
.
size
();
return
m_
queue
.
size
();
}
public
void
setSize
(
int
size
)
{
m_size
=
size
;
}
}
cat-core/src/main/java/com/dianping/cat/message/io/TcpSocketSender.java
浏览文件 @
7ae45388
...
...
@@ -21,10 +21,11 @@ import org.jboss.netty.channel.SimpleChannelHandler;
import
org.jboss.netty.channel.socket.nio.NioClientSocketChannelFactory
;
import
com.dianping.cat.message.spi.MessageCodec
;
import
com.dianping.cat.message.spi.MessageQueue
;
import
com.dianping.cat.message.spi.MessageTree
;
import
com.site.lookup.annotation.Inject
;
public
class
TcpSocketSender
implements
MessageSender
,
LogEnabled
{
public
class
TcpSocketSender
extends
Thread
implements
MessageSender
,
LogEnabled
{
@Inject
private
String
m_host
;
...
...
@@ -34,6 +35,9 @@ public class TcpSocketSender implements MessageSender, LogEnabled {
@Inject
private
MessageCodec
m_codec
;
@Inject
private
MessageQueue
m_queue
;
private
ChannelFactory
m_factory
;
private
ChannelFuture
m_future
;
...
...
@@ -46,6 +50,20 @@ public class TcpSocketSender implements MessageSender, LogEnabled {
private
Logger
m_logger
;
public
void
run
()
{
while
(
true
)
{
try
{
MessageTree
tree
=
m_queue
.
poll
();
if
(
tree
!=
null
)
{
sendReal
(
tree
);
}
}
catch
(
Throwable
t
)
{
m_logger
.
error
(
"Error when sending message over TCP socket!"
,
t
);
}
}
}
@Override
public
void
enableLogging
(
Logger
logger
)
{
m_logger
=
logger
;
...
...
@@ -84,6 +102,8 @@ public class TcpSocketSender implements MessageSender, LogEnabled {
}
m_bootstrap
=
bootstrap
;
this
.
start
();
}
public
void
reconnect
()
{
...
...
@@ -110,6 +130,14 @@ public class TcpSocketSender implements MessageSender, LogEnabled {
@Override
public
void
send
(
MessageTree
tree
)
{
boolean
result
=
m_queue
.
offer
(
tree
);
if
(!
result
)
{
m_logger
.
error
(
"Message queue is full in tcp socket sender!"
);
}
}
private
void
sendReal
(
MessageTree
tree
)
{
if
(
m_future
==
null
||
!
m_future
.
getChannel
().
isOpen
())
{
reconnect
();
}
...
...
cat-core/src/main/java/com/dianping/cat/message/spi/MessageQueue.java
浏览文件 @
7ae45388
...
...
@@ -2,9 +2,10 @@ package com.dianping.cat.message.spi;
public
interface
MessageQueue
{
//the current size of the queue
public
int
size
();
public
MessageTree
poll
();
public
void
offer
(
MessageTree
tree
);
public
boolean
offer
(
MessageTree
tree
);
}
cat-core/src/main/java/com/dianping/cat/message/spi/internal/DefaultMessageTree.java
浏览文件 @
7ae45388
...
...
@@ -55,7 +55,9 @@ public class DefaultMessageTree implements MessageTree {
@Override
public
void
setParentMessageId
(
String
parentMessageId
)
{
m_parentMessageId
=
parentMessageId
;
if
(
parentMessageId
!=
null
&&
parentMessageId
.
length
()
>
0
)
{
m_parentMessageId
=
parentMessageId
;
}
}
@Override
...
...
@@ -65,7 +67,9 @@ public class DefaultMessageTree implements MessageTree {
@Override
public
void
setRootMessageId
(
String
rootMessageId
)
{
m_rootMessageId
=
rootMessageId
;
if
(
rootMessageId
!=
null
&&
rootMessageId
.
length
()
>
0
)
{
m_rootMessageId
=
rootMessageId
;
}
}
@Override
...
...
@@ -129,7 +133,9 @@ public class DefaultMessageTree implements MessageTree {
@Override
public
void
setMessageId
(
String
messageId
)
{
m_messageId
=
messageId
;
if
(
messageId
!=
null
&&
messageId
.
length
()
>
0
)
{
m_messageId
=
messageId
;
}
}
@Override
...
...
cat-core/src/main/resources/META-INF/plexus/components.xml
浏览文件 @
7ae45388
...
...
@@ -99,6 +99,14 @@
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.message.spi.MessageQueue
</role>
<implementation>
com.dianping.cat.message.io.DefaultMessageQueue
</implementation>
<instantiation-strategy>
per-lookup
</instantiation-strategy>
<configuration>
<size>
1000
</size>
</configuration>
</component>
<component>
<role>
com.dianping.cat.message.io.MessageSender
</role>
<role-hint>
tcp-socket
</role-hint>
...
...
@@ -108,6 +116,11 @@
<requirement>
<role>
com.dianping.cat.message.spi.MessageCodec
</role>
<role-hint>
plain-text
</role-hint>
<field-name>
m_codec
</field-name>
</requirement>
<requirement>
<role>
com.dianping.cat.message.spi.MessageQueue
</role>
<field-name>
m_queue
</field-name>
</requirement>
</requirements>
</component>
...
...
cat-core/src/test/java/com/dianping/cat/message/io/TcpSocketTestConfigurator.java
浏览文件 @
7ae45388
...
...
@@ -6,6 +6,7 @@ import java.util.List;
import
com.dianping.cat.message.io.TcpSocketTest.MockMessageCodec
;
import
com.dianping.cat.message.spi.MessageCodec
;
import
com.dianping.cat.message.spi.MessageQueue
;
import
com.site.lookup.configuration.AbstractResourceConfigurator
;
import
com.site.lookup.configuration.Component
;
...
...
@@ -22,7 +23,8 @@ public class TcpSocketTestConfigurator extends AbstractResourceConfigurator {
all
.
add
(
C
(
MessageCodec
.
class
,
tcpSocket
,
MockMessageCodec
.
class
));
all
.
add
(
C
(
MessageSender
.
class
,
tcpSocket
,
TcpSocketSender
.
class
).
is
(
PER_LOOKUP
)
//
.
req
(
MessageCodec
.
class
,
tcpSocket
)
//
.
req
(
MessageCodec
.
class
,
tcpSocket
,
"m_codec"
)
//
.
req
(
MessageQueue
.
class
,
"default"
,
"m_queue"
)
//
.
config
(
E
(
"host"
).
value
(
"localhost"
)));
all
.
add
(
C
(
MessageReceiver
.
class
,
tcpSocket
,
TcpSocketReceiver
.
class
).
is
(
PER_LOOKUP
)
//
.
req
(
MessageCodec
.
class
,
tcpSocket
)
//
...
...
cat-core/src/test/resources/com/dianping/cat/message/io/TcpSocketTest.xml
浏览文件 @
7ae45388
...
...
@@ -17,6 +17,11 @@
<requirement>
<role>
com.dianping.cat.message.spi.MessageCodec
</role>
<role-hint>
tcp-socket
</role-hint>
<field-name>
m_codec
</field-name>
</requirement>
<requirement>
<role>
com.dianping.cat.message.spi.MessageQueue
</role>
<field-name>
m_queue
</field-name>
</requirement>
</requirements>
</component>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录