通用接口开放平台设计与实现——(6)消息服务技术选型

本文探讨了接口开放平台在消息服务设计时遇到的问题,包括消息中间件如RabbitMQ在权限控制上的不足。选择了Netty作为网络通信框架,通过扩展实现权限控制,并详细阐述了为何选用WebSocket作为通信协议,以满足业务灵活性和便利性需求。
摘要由CSDN通过智能技术生成

背景

接口开放平台关于API服务部分,采用Restful接口,技术实现使用SpringMVC,没什么可多说的。
而消息服务这块,则面临着使用什么样的技术实现。

问题与挑战

在最初的需求明确后,咋一看,感觉与消息队列中间件的应用场景非常接近,就是消息的传递,而主流的消息中间件,像RabbitMQ、kafka、RocketMQ等,设计都很优秀,内部实现了高性能、高吞吐量,如果采用这种成熟的中间件,是否就不用自己来实现了?

结合业务场景深入思考,发现不是那么回事。

在这个应用场景下,有个关键的问题,是消息中间件未提供的能力或无法解决的,就是数据权限的控制

例如:物流系统LMS对接若干家汽运承运商的运输管理系统TMS,LMS需要调度人员为运输需求单指派一家汽运承运商,然后需要消息服务中心,向被委托的这一家承运商的TMS系统,推送1条委托单创建消息,而如果把这条委托单消息推送给所有的承运商TMS系统,明显是很不合理的。

消息中间件评估

上面提到的几个主流消息队列中间件,虽然能提供一些消息主题分类和路由分发功能,但往往只是按消息主题建立消息通道,至于消息会发向什么地方,控制权不在于消息服务端,而是由客户端自行决定订阅哪些消息主题。在上面这种场景下,实际是做不到权限控制的。当然,我们也可以基于消息中间件的基础功能做一定的变通,例如将路由的key值通过密钥加密,只有相应的客户端才能通过加密或签名算法获取到消息通道,这样表

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学海无涯,行者无疆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值