从C++;应用于Akka演员 我有一个C++应用程序,需要把结构化数据发送给AKKA的演员。我发现的最好的选择(Google、stackoverflow…)是使用协议缓冲区和ZeroMQ,因为看起来每个人都推荐它。 然而,我一整天都在努力让它工作,Scala actor代码中出现了各种各样的崩溃(伴随着奇怪的Windows套接字错误)。当我深入研究它时,我注意到zeromq似乎在不久前从Akka官方文档中消失了,我最近读到的文档说zeromq 3仍然不受下面的zeromq scala绑定的支持(而版本4已经过时)

从C++;应用于Akka演员 我有一个C++应用程序,需要把结构化数据发送给AKKA的演员。我发现的最好的选择(Google、stackoverflow…)是使用协议缓冲区和ZeroMQ,因为看起来每个人都推荐它。 然而,我一整天都在努力让它工作,Scala actor代码中出现了各种各样的崩溃(伴随着奇怪的Windows套接字错误)。当我深入研究它时,我注意到zeromq似乎在不久前从Akka官方文档中消失了,我最近读到的文档说zeromq 3仍然不受下面的zeromq scala绑定的支持(而版本4已经过时),c++,scala,akka,akka-zeromq,C++,Scala,Akka,Akka Zeromq,使用Camel-netty扩展并通过JSON传递信息是更好的选择吗 谢谢 一个相当简单的方法是使用编写HTTP端点。Spray具有JSON支持,并且由于它构建在Akka之上,因此可以与其他参与者无缝通信。这样做的优点是,发送到端点的数据不必与参与者期望的消息格式匹配。您可以更改演员预期的消息,而不必更改C++代码发送的内容。对于双向通信,还支持web套接字。我从未使用过Akka,所以我只讲java,希望它不会有太大的不同。我每天使用C++和java之间的协议缓冲区,配置和使用是一件很愉快的事情。

使用Camel-netty扩展并通过JSON传递信息是更好的选择吗


谢谢

一个相当简单的方法是使用编写HTTP端点。Spray具有JSON支持,并且由于它构建在Akka之上,因此可以与其他参与者无缝通信。这样做的优点是,发送到端点的数据不必与参与者期望的消息格式匹配。您可以更改演员预期的消息,而不必更改C++代码发送的内容。对于双向通信,还支持web套接字。

我从未使用过Akka,所以我只讲java,希望它不会有太大的不同。我每天使用C++和java之间的协议缓冲区,配置和使用是一件很愉快的事情。我建议你更加努力,让它发挥作用。你可以试一试,我从未尝试过,但我的回报很好。Protocolbuffer听起来很好(我以前也用过),我的问题更多的是关于传输协议。我想在Akka端进行最小设置,从外部世界接收protocolbuffer似乎不是一件小事。所以这似乎是一个套接字问题?在我的情况下,我们用我们的插座工作。一旦插座稳定,我们就不会有任何困难让protobuf工作。。。很抱歉,我帮不了你更多的忙,祝你好运:-)如果两个应用程序都在同一台设备上,避免套接字(和验证protobuf)的一个解决办法是将序列化数据写入应用程序中特定文件夹中的文件中,并在另一个池中定期写入同一文件夹中的文件,然后取消序列化文件中的数据(然后删除文件)。我认为它可以工作。(如果你在Linux上考虑使用/Run/SHM/文件夹来将这些文件存储在RAM中,而不是在磁盘上以最大化性能),它们目前确实在同一设备上,但如果我能避免添加任何限制,我会更高兴。感谢您提供的套接字示例,我将看到:)。我只是想知道为什么ZeroMQ突然从Akka文档中消失了。谢谢你的输入。出于好奇,您是否知道您的建议与Akka文档中的内容(camel-netty扩展)的利弊?因为我想做的很简单,所以我不确定我是否需要Spray.io附带的所有功能。@Canard问得好。我不认为骆驼是一个坏的选择,它似乎得到了阿克卡的支持。我更愿意回应您关于使用ZeroMQ的建议,因为ZeroMQ已经被正式的Akka发行版踢出,这似乎有点棘手。我的方法的优点是,你基本上是做了一个微型服务,与你的C++系统交谈。配置更少,允许任意一方更轻松地更改。如果你不需要这些好处,骆驼是个不错的选择。