Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
pulsar
提交
ae3494d8
pulsar
项目概览
apache
/
pulsar
通知
129
Star
40
Fork
3
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Wiki
1
Wiki
分析
仓库
DevOps
项目成员
Pages
pulsar
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Pages
分析
分析
仓库分析
DevOps
Wiki
1
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
提交
体验新版 GitCode,发现更多精彩内容 >>
提交
ae3494d8
编写于
8月 01, 2019
作者:
L
lipenghui
提交者:
Jia Zhai
8月 28, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Catch throwable in interceptors of consumer and producer. (#4860)
(cherry picked from commit
00ce7815
)
上级
13c88da1
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
110 addition
and
9 deletion
+110
-9
pulsar-broker/src/test/java/org/apache/pulsar/client/api/InterceptorsTest.java
...t/java/org/apache/pulsar/client/api/InterceptorsTest.java
+101
-0
pulsar-client/src/main/java/org/apache/pulsar/client/impl/ConsumerInterceptors.java
...a/org/apache/pulsar/client/impl/ConsumerInterceptors.java
+6
-6
pulsar-client/src/main/java/org/apache/pulsar/client/impl/ProducerInterceptors.java
...a/org/apache/pulsar/client/impl/ProducerInterceptors.java
+3
-3
未找到文件。
pulsar-broker/src/test/java/org/apache/pulsar/client/api/InterceptorsTest.java
浏览文件 @
ae3494d8
...
@@ -145,6 +145,107 @@ public class InterceptorsTest extends ProducerConsumerBase {
...
@@ -145,6 +145,107 @@ public class InterceptorsTest extends ProducerConsumerBase {
producer
.
close
();
producer
.
close
();
}
}
@Test
public
void
testProducerInterceptorsWithErrors
()
throws
PulsarClientException
{
ProducerInterceptor
<
String
>
interceptor
=
new
ProducerInterceptor
<
String
>()
{
@Override
public
void
close
()
{
}
@Override
public
Message
<
String
>
beforeSend
(
Producer
<
String
>
producer
,
Message
<
String
>
message
)
{
throw
new
AbstractMethodError
();
}
@Override
public
void
onSendAcknowledgement
(
Producer
<
String
>
producer
,
Message
<
String
>
message
,
MessageId
msgId
,
Throwable
exception
)
{
throw
new
AbstractMethodError
();
}
};
Producer
<
String
>
producer
=
pulsarClient
.
newProducer
(
Schema
.
STRING
)
.
topic
(
"persistent://my-property/my-ns/my-topic"
)
.
intercept
(
interceptor
)
.
create
();
MessageId
messageId
=
producer
.
newMessage
().
value
(
"Hello Pulsar!"
).
send
();
Assert
.
assertNotNull
(
messageId
);
producer
.
close
();
}
@Test
public
void
testConsumerInterceptorWithErrors
()
throws
PulsarClientException
{
ConsumerInterceptor
<
String
>
interceptor
=
new
ConsumerInterceptor
<
String
>()
{
@Override
public
void
close
()
{
throw
new
AbstractMethodError
();
}
@Override
public
Message
<
String
>
beforeConsume
(
Consumer
<
String
>
consumer
,
Message
<
String
>
message
)
{
throw
new
AbstractMethodError
();
}
@Override
public
void
onAcknowledge
(
Consumer
<
String
>
consumer
,
MessageId
messageId
,
Throwable
exception
)
{
throw
new
AbstractMethodError
();
}
@Override
public
void
onAcknowledgeCumulative
(
Consumer
<
String
>
consumer
,
MessageId
messageId
,
Throwable
exception
)
{
throw
new
AbstractMethodError
();
}
@Override
public
void
onNegativeAcksSend
(
Consumer
<
String
>
consumer
,
Set
<
MessageId
>
messageIds
)
{
throw
new
AbstractMethodError
();
}
@Override
public
void
onAckTimeoutSend
(
Consumer
<
String
>
consumer
,
Set
<
MessageId
>
messageIds
)
{
throw
new
AbstractMethodError
();
}
};
Consumer
<
String
>
consumer1
=
pulsarClient
.
newConsumer
(
Schema
.
STRING
)
.
topic
(
"persistent://my-property/my-ns/my-topic-exception"
)
.
subscriptionType
(
SubscriptionType
.
Shared
)
.
intercept
(
interceptor
)
.
subscriptionName
(
"my-subscription-ack-timeout"
)
.
ackTimeout
(
3
,
TimeUnit
.
SECONDS
)
.
subscribe
();
Consumer
<
String
>
consumer2
=
pulsarClient
.
newConsumer
(
Schema
.
STRING
)
.
topic
(
"persistent://my-property/my-ns/my-topic-exception"
)
.
subscriptionType
(
SubscriptionType
.
Shared
)
.
intercept
(
interceptor
)
.
subscriptionName
(
"my-subscription-negative"
)
.
subscribe
();
Producer
<
String
>
producer
=
pulsarClient
.
newProducer
(
Schema
.
STRING
)
.
topic
(
"persistent://my-property/my-ns/my-topic-exception"
)
.
create
();
producer
.
newMessage
().
value
(
"Hello Pulsar!"
).
send
();
Message
<
String
>
received
=
consumer1
.
receive
();
Assert
.
assertEquals
(
received
.
getValue
(),
"Hello Pulsar!"
);
// wait ack timeout
Message
<
String
>
receivedAgain
=
consumer1
.
receive
();
Assert
.
assertEquals
(
receivedAgain
.
getValue
(),
"Hello Pulsar!"
);
consumer1
.
acknowledge
(
receivedAgain
);
received
=
consumer2
.
receive
();
Assert
.
assertEquals
(
received
.
getValue
(),
"Hello Pulsar!"
);
consumer2
.
negativeAcknowledge
(
received
);
receivedAgain
=
consumer2
.
receive
();
Assert
.
assertEquals
(
receivedAgain
.
getValue
(),
"Hello Pulsar!"
);
consumer2
.
acknowledge
(
receivedAgain
);
producer
.
close
();
consumer1
.
close
();
consumer2
.
close
();
}
@Test
@Test
public
void
testConsumerInterceptorWithSingleTopicSubscribe
()
throws
PulsarClientException
{
public
void
testConsumerInterceptorWithSingleTopicSubscribe
()
throws
PulsarClientException
{
ConsumerInterceptor
<
String
>
interceptor
=
new
ConsumerInterceptor
<
String
>()
{
ConsumerInterceptor
<
String
>
interceptor
=
new
ConsumerInterceptor
<
String
>()
{
...
...
pulsar-client/src/main/java/org/apache/pulsar/client/impl/ConsumerInterceptors.java
浏览文件 @
ae3494d8
...
@@ -66,7 +66,7 @@ public class ConsumerInterceptors<T> implements Closeable {
...
@@ -66,7 +66,7 @@ public class ConsumerInterceptors<T> implements Closeable {
for
(
int
i
=
0
,
interceptorsSize
=
interceptors
.
size
();
i
<
interceptorsSize
;
i
++)
{
for
(
int
i
=
0
,
interceptorsSize
=
interceptors
.
size
();
i
<
interceptorsSize
;
i
++)
{
try
{
try
{
interceptorMessage
=
interceptors
.
get
(
i
).
beforeConsume
(
consumer
,
interceptorMessage
);
interceptorMessage
=
interceptors
.
get
(
i
).
beforeConsume
(
consumer
,
interceptorMessage
);
}
catch
(
Exception
e
)
{
}
catch
(
Throwable
e
)
{
if
(
consumer
!=
null
)
{
if
(
consumer
!=
null
)
{
log
.
warn
(
"Error executing interceptor beforeConsume callback topic: {} consumerName: {}"
,
consumer
.
getTopic
(),
consumer
.
getConsumerName
(),
e
);
log
.
warn
(
"Error executing interceptor beforeConsume callback topic: {} consumerName: {}"
,
consumer
.
getTopic
(),
consumer
.
getConsumerName
(),
e
);
}
else
{
}
else
{
...
@@ -92,7 +92,7 @@ public class ConsumerInterceptors<T> implements Closeable {
...
@@ -92,7 +92,7 @@ public class ConsumerInterceptors<T> implements Closeable {
for
(
int
i
=
0
,
interceptorsSize
=
interceptors
.
size
();
i
<
interceptorsSize
;
i
++)
{
for
(
int
i
=
0
,
interceptorsSize
=
interceptors
.
size
();
i
<
interceptorsSize
;
i
++)
{
try
{
try
{
interceptors
.
get
(
i
).
onAcknowledge
(
consumer
,
messageId
,
exception
);
interceptors
.
get
(
i
).
onAcknowledge
(
consumer
,
messageId
,
exception
);
}
catch
(
Exception
e
)
{
}
catch
(
Throwable
e
)
{
log
.
warn
(
"Error executing interceptor onAcknowledge callback "
,
e
);
log
.
warn
(
"Error executing interceptor onAcknowledge callback "
,
e
);
}
}
}
}
...
@@ -113,7 +113,7 @@ public class ConsumerInterceptors<T> implements Closeable {
...
@@ -113,7 +113,7 @@ public class ConsumerInterceptors<T> implements Closeable {
for
(
int
i
=
0
,
interceptorsSize
=
interceptors
.
size
();
i
<
interceptorsSize
;
i
++)
{
for
(
int
i
=
0
,
interceptorsSize
=
interceptors
.
size
();
i
<
interceptorsSize
;
i
++)
{
try
{
try
{
interceptors
.
get
(
i
).
onAcknowledgeCumulative
(
consumer
,
messageId
,
exception
);
interceptors
.
get
(
i
).
onAcknowledgeCumulative
(
consumer
,
messageId
,
exception
);
}
catch
(
Exception
e
)
{
}
catch
(
Throwable
e
)
{
log
.
warn
(
"Error executing interceptor onAcknowledgeCumulative callback "
,
e
);
log
.
warn
(
"Error executing interceptor onAcknowledgeCumulative callback "
,
e
);
}
}
}
}
...
@@ -134,7 +134,7 @@ public class ConsumerInterceptors<T> implements Closeable {
...
@@ -134,7 +134,7 @@ public class ConsumerInterceptors<T> implements Closeable {
for
(
int
i
=
0
,
interceptorsSize
=
interceptors
.
size
();
i
<
interceptorsSize
;
i
++)
{
for
(
int
i
=
0
,
interceptorsSize
=
interceptors
.
size
();
i
<
interceptorsSize
;
i
++)
{
try
{
try
{
interceptors
.
get
(
i
).
onNegativeAcksSend
(
consumer
,
messageIds
);
interceptors
.
get
(
i
).
onNegativeAcksSend
(
consumer
,
messageIds
);
}
catch
(
Exception
e
)
{
}
catch
(
Throwable
e
)
{
log
.
warn
(
"Error executing interceptor onNegativeAcksSend callback"
,
e
);
log
.
warn
(
"Error executing interceptor onNegativeAcksSend callback"
,
e
);
}
}
}
}
...
@@ -155,7 +155,7 @@ public class ConsumerInterceptors<T> implements Closeable {
...
@@ -155,7 +155,7 @@ public class ConsumerInterceptors<T> implements Closeable {
for
(
int
i
=
0
,
interceptorsSize
=
interceptors
.
size
();
i
<
interceptorsSize
;
i
++)
{
for
(
int
i
=
0
,
interceptorsSize
=
interceptors
.
size
();
i
<
interceptorsSize
;
i
++)
{
try
{
try
{
interceptors
.
get
(
i
).
onAckTimeoutSend
(
consumer
,
messageIds
);
interceptors
.
get
(
i
).
onAckTimeoutSend
(
consumer
,
messageIds
);
}
catch
(
Exception
e
)
{
}
catch
(
Throwable
e
)
{
log
.
warn
(
"Error executing interceptor onAckTimeoutSend callback"
,
e
);
log
.
warn
(
"Error executing interceptor onAckTimeoutSend callback"
,
e
);
}
}
}
}
...
@@ -166,7 +166,7 @@ public class ConsumerInterceptors<T> implements Closeable {
...
@@ -166,7 +166,7 @@ public class ConsumerInterceptors<T> implements Closeable {
for
(
int
i
=
0
,
interceptorsSize
=
interceptors
.
size
();
i
<
interceptorsSize
;
i
++)
{
for
(
int
i
=
0
,
interceptorsSize
=
interceptors
.
size
();
i
<
interceptorsSize
;
i
++)
{
try
{
try
{
interceptors
.
get
(
i
).
close
();
interceptors
.
get
(
i
).
close
();
}
catch
(
Exception
e
)
{
}
catch
(
Throwable
e
)
{
log
.
error
(
"Fail to close consumer interceptor "
,
e
);
log
.
error
(
"Fail to close consumer interceptor "
,
e
);
}
}
}
}
...
...
pulsar-client/src/main/java/org/apache/pulsar/client/impl/ProducerInterceptors.java
浏览文件 @
ae3494d8
...
@@ -63,7 +63,7 @@ public class ProducerInterceptors<T> implements Closeable {
...
@@ -63,7 +63,7 @@ public class ProducerInterceptors<T> implements Closeable {
for
(
int
i
=
0
;
i
<
interceptors
.
size
();
i
++)
{
for
(
int
i
=
0
;
i
<
interceptors
.
size
();
i
++)
{
try
{
try
{
interceptorMessage
=
interceptors
.
get
(
i
).
beforeSend
(
producer
,
interceptorMessage
);
interceptorMessage
=
interceptors
.
get
(
i
).
beforeSend
(
producer
,
interceptorMessage
);
}
catch
(
Exception
e
)
{
}
catch
(
Throwable
e
)
{
if
(
producer
!=
null
)
{
if
(
producer
!=
null
)
{
log
.
warn
(
"Error executing interceptor beforeSend callback for topicName:{} "
,
producer
.
getTopic
(),
e
);
log
.
warn
(
"Error executing interceptor beforeSend callback for topicName:{} "
,
producer
.
getTopic
(),
e
);
}
else
{
}
else
{
...
@@ -91,7 +91,7 @@ public class ProducerInterceptors<T> implements Closeable {
...
@@ -91,7 +91,7 @@ public class ProducerInterceptors<T> implements Closeable {
for
(
int
i
=
0
;
i
<
interceptors
.
size
();
i
++)
{
for
(
int
i
=
0
;
i
<
interceptors
.
size
();
i
++)
{
try
{
try
{
interceptors
.
get
(
i
).
onSendAcknowledgement
(
producer
,
message
,
msgId
,
exception
);
interceptors
.
get
(
i
).
onSendAcknowledgement
(
producer
,
message
,
msgId
,
exception
);
}
catch
(
Exception
e
)
{
}
catch
(
Throwable
e
)
{
log
.
warn
(
"Error executing interceptor onSendAcknowledgement callback "
,
e
);
log
.
warn
(
"Error executing interceptor onSendAcknowledgement callback "
,
e
);
}
}
}
}
...
@@ -102,7 +102,7 @@ public class ProducerInterceptors<T> implements Closeable {
...
@@ -102,7 +102,7 @@ public class ProducerInterceptors<T> implements Closeable {
for
(
int
i
=
0
;
i
<
interceptors
.
size
();
i
++)
{
for
(
int
i
=
0
;
i
<
interceptors
.
size
();
i
++)
{
try
{
try
{
interceptors
.
get
(
i
).
close
();
interceptors
.
get
(
i
).
close
();
}
catch
(
Exception
e
)
{
}
catch
(
Throwable
e
)
{
log
.
error
(
"Fail to close producer interceptor "
,
e
);
log
.
error
(
"Fail to close producer interceptor "
,
e
);
}
}
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录