我们有一个桌面 C# 应用程序,它将与 C++ 中的 Windows 服务进行通信。我们需要使用 RabbitMQ 将复杂对象(具有许多实体)发送到此 Windows 服务。我们想使用二进制格式化程序。但我们不想使用 C# 二进制格式化程序,因为如果没有 .Net 库,C++ 服务将无法反序列化它。有没有办法使用 RabbitMQ 在 C++ 和 C# 之间发送二进制数据?
如果我们复制硬盘上的二进制文件并使用 RabbitMQ 作为事件发送该文件的位置,这是一个好主意吗?如果我们需要将文件复制到磁盘并使用 RabbitMQ 而不是实际数据发送事件,这似乎不是很好地使用 RabbitMQ。
向使用过 RabbitMQ 的人寻求一些指导。
您需要弄清楚如何序列化数据,以便 C# 和 C++ 应用程序都可以使用它。 协议缓冲区是一个很好的解决方案。
有没有办法使用 RabbitMQ 在 C++ 和 C# 之间发送二进制数据?
是的,当然。 RabbitMQ 将消息体视为不透明的二进制数据,因此您可以发送任何您想要的内容。
如果我们复制硬盘上的二进制文件并使用 RabbitMQ 作为事件发送该文件的位置,这是一个好主意吗?如果我们需要将文件复制到磁盘并使用 RabbitMQ 而不是实际数据发送事件,这似乎不是很好地使用 RabbitMQ。
如果数据量非常大或者您将在短时间内发送许多“大型”消息,这是 RabbitMQ 团队建议的做法。例如,如果您的数据为 10MiB,但每分钟只发送几条消息,那可能没问题。您应该使用 PerfTest 工具 来模拟您的工作负载。您可以指定消息大小作为参数之一。