2016-10-09 07:54发布
现在有一个项目,用到了java和c++来实现不同的模块,目前的问题是:如何高效方便地实现java和c++之间的通信?我想到的是使用TCP进行数据交互,不过感觉这样还是太费劲了,有没有更好的方法?
如果各个模块之间的交互不需要同步的话, 那么可以考虑使用队列的方式.我原来做过一个项目, 也有类似的需求, 不过我的各个模块之间不需要强的同步性, 因此我选择了 ActiveMQ 和 Protobuf 的组合.Protobuf 的作用是提供 Java 和 C++ 之间的数据对象的序列化, 方便它们之间的数据交互, 而 ActiveMQ 就是一个 Java 编写的著名的开源消息队列实现.整个方案也不复杂, 即 Java 通过 Protobuf 将结构化的数据 序列化为二进制数据, 然后放到 ActiveMQ 消息队列中. C++ 模块呢, 就监听 ActiveMQ 队列中的消息, 当获取到一个消息时, 就使用 Protobuf 反序列化出来, 进而获取到 C++ 可以处理的数据.
最多设置5个标签!
如果各个模块之间的交互不需要同步的话, 那么可以考虑使用队列的方式.
我原来做过一个项目, 也有类似的需求, 不过我的各个模块之间不需要强的同步性, 因此我选择了 ActiveMQ 和 Protobuf 的组合.
Protobuf 的作用是提供 Java 和 C++ 之间的数据对象的序列化, 方便它们之间的数据交互, 而 ActiveMQ 就是一个 Java 编写的著名的开源消息队列实现.
整个方案也不复杂, 即 Java 通过 Protobuf 将结构化的数据 序列化为二进制数据, 然后放到 ActiveMQ 消息队列中. C++ 模块呢, 就监听 ActiveMQ 队列中的消息, 当获取到一个消息时, 就使用 Protobuf 反序列化出来, 进而获取到 C++ 可以处理的数据.
一周热门 更多>