使用场景:使用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
1.服务端只会监听provider路径,当你客户端发送请求然后宕机,服务端准备好数据通过channel发送数据到客户端,肯定会报错
2.客户端会去监听服务端的,永久卡死是啥?客户端有超时机制啊 数据丢失问题不能依靠dubbo来解决吧,只是一个RPC,数据并没有落地吧
原回答者GitHub用户AnyOSR
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。