开发者社区 > 云原生 > 正文

dubbo在listener调用时对异常的处理

使用场景:使用dubbo Callback回调消费kafka数据 使用目的:1、防止kafka账户信息泄露

2、Topic授权校验

3、对kafka数据进行过滤

服务发布:

<dubbo:service interface="com.xx.xx.xx.xxService" ref="dataSubscriptionService" timeout="200000" callbacks="1000" connections="100" protocol="dubbo" group="routing"> <dubbo:method name="addListener"> <dubbo:argument index="2" callback="true" /> </dubbo:method> </dubbo:service>

服务消费: <dubbo:reference id="dataSubscriptionService" interface="com.xx.xx.xx.xxService" group="XX"/>

出现问题:

1、服务端稳定,客户端重启【客户端停止后,服务端未监听客户端停止,回调报错】 服务端报错: client disconnected com.alibaba.dubbo.rpc.RpcException: Failed to send message Request Caused by: java.nio.channels.ClosedChannelException: null 会丢失数据条数不定或延迟

2、服务端重启,客户端稳定【服务端停止后,客户端未监听服务端停止重连,永久卡死】

客户端永久卡死,重启后正常消费数据

1、服务端正在发送数据过程中重启,丢失同批不定条数数据

2、静置状态重启,客户端重启后数据正常消费,不会丢失数据

3、客户端启动之后非阻塞状态,服务端故障后客户端不再重试

原提问者GitHub用户my12us

展开
收起
大圣东游 2023-05-11 20:22:21 137 0
1 条回答
写回答
取消 提交回答
  • 1.服务端只会监听provider路径,当你客户端发送请求然后宕机,服务端准备好数据通过channel发送数据到客户端,肯定会报错

    2.客户端会去监听服务端的,永久卡死是啥?客户端有超时机制啊 数据丢失问题不能依靠dubbo来解决吧,只是一个RPC,数据并没有落地吧

    原回答者GitHub用户AnyOSR

    2023-05-12 12:09:35
    赞同 展开评论 打赏

阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。

相关电子书

更多
Dubbo开源现状与2.7规划 立即下载
Dubbo分布式服务治理实战 立即下载
《Dubbo 3.0 前瞻》 立即下载