我现在正在设计一个使用RabbitMQ作为消息队列的设计.消息将具有JSON主体,特别是对于一条消息,我想添加一个小的二进制文件.
我想知道的是,二进制文件的数据是否应该是JSON消息的一部分,还是可以单独附加到消息中?
coh*_*dar 16
由于RabbitMQ消息有效负载只是一个二进制数组,因此您应该使用3个字段对消息体进行编码:
我不同意先前关于在json中嵌入文件的答案.如果你对json中的文件数据进行编码,你会因为json转义+不必要的CPU占用而浪费空间,因为json编码/解码文件数据+你需要两次读取文件数据(一次用于json反序列化,再一次用于复制它需要去的地方)
rob*_*olf 15
消息是单字节流,它还包含一个标题但不太相关.我建议你采取两种方法之一.您的JSON对象包含一个字段,该字段是二进制文件的字节流.或者,它提供可以下载文件的地址.如果二进制文件很小,那么前者应该可以正常工作.否则你可能更喜欢后者.
我们使用 RabbitMQ 和文件传输。它的工作速度有点慢,但对于更新远方的客户来说是可行的。我建议您遵循以下准则:为您发送的每个块创建一个消息结构,包括命令、偏移量和 CRC32、数据长度、每个数据块最大 60kByte、给块一个计数器、最后执行 sha256 以确保数据正确, 将 tar 设为可选,以便数据可以更小,传输速度更快.. 制作目录,查看哪些文件需要更新...使用广播事件查看谁可用,并与客户端一次更新 1 个客户。 company.update orso,客户收听.company。玩得开心!ps 我们还为此创建了一个 linux 服务,它在客户处自动启动。
| 归档时间: |
|
| 查看次数: |
23322 次 |
| 最近记录: |