Java 已知的RPC协议用于将JMS放在ontop上
我正在开发一个分布式系统,它由通过JMS(ActiveMQ)松散(异步)耦合的不同组件(服务)组成 因此,我不想重新发明轮子,我正在寻找一个(众所周知的)协议/库,它可以促进这些组件之间的远程过程调用,并帮助我处理方法接口 因此,让我们通过肮脏的解决方案来分解我现在已经在解决的问题:Java 已知的RPC协议用于将JMS放在ontop上,java,jms,protocols,rpc,thrift,Java,Jms,Protocols,Rpc,Thrift,我正在开发一个分布式系统,它由通过JMS(ActiveMQ)松散(异步)耦合的不同组件(服务)组成 因此,我不想重新发明轮子,我正在寻找一个(众所周知的)协议/库,它可以促进这些组件之间的远程过程调用,并帮助我处理方法接口 因此,让我们通过肮脏的解决方案来分解我现在已经在解决的问题: 消费者组件希望调用服务,因此它构造了一个请求字符串(手写和脏的) 然后将请求字符串压缩并放入JMS消息中(也是脏的) 请求消息通过JMS和路由机制传输(这部分还可以) 服务首先需要解压缩和解析请求字符串,以确定正确
Syntax: OPERATION_NAME [PARAMETERS]
Method: GET_ALL_KEYWORDS [String text] returns [JSON String[] keywords]
Example Request: GET_ALL_KEYWORDS "Hello world, this is my input text..."
Example Reply: ["hello", "world", "text"]
不用说,这感觉就像是被砍成了一块。我看到的问题是,如果要通过添加或删除参数来更改方法接口,我必须检查所有请求/回复字符串构造/解构以同步更改。这很容易出错。我宁愿让库通过查看java接口并在运行时抛出真正的异常来构造正确的请求/应答语法,如果我把事情搞砸了,比如“协议异常:未设置强制参数”之类的
是否有已知的项目/LIB
要求将是
我想这个春季套餐正是你想要的。请参阅和相关类 从javadoc: 用于JMS调用程序代理的FactoryBean。公开的代理服务 使用指定的服务接口作为bean引用 序列化远程调用对象并反序列化远程调用对象 调用结果对象。与RMI一样使用Java序列化,但是 使用JMS提供程序作为通信基础设施
你的问题不清楚?您是否正在尝试将jms中的异步操作转换为同步java API?如果是这样,为什么要使用JMS?不,不需要异步/同步桥。一切都是异步的。我使用JMS进行所有服务到服务的通信。目前正在应用自写协议和自写数据序列化/反序列化。哪种看起来很难看。很好的提示,谢谢。我非常了解Spring在Web应用程序环境中的应用,我看到Spring的缺点是它带来了大量依赖项。在所描述的应用程序体系结构中,我希望使事物保持真正的纤细和微小。因此,我更愿意寻找一种轻量级的替代方案。我通过JMS使用SpringRemoting来精确地描述您描述的情况,并且它工作得非常好。如果您不想将Spring添加为依赖项,那么最好的选择可能是将其作为您自己实现的灵感。