Senden Binärdatei durch RabbitMQ
Bin ich spec ' Ing eine design jetzt verwendet RabbitMQ als message queue. Die Botschaft gehen, um eine JSON-Körper, und für eine Nachricht im besonderen möchte ich hinzufügen, eine kleine binäre Datei.
Was ich wissen möchte ist, der sollte sich die binary-Datei-Daten werden Teil der JSON-Nachricht, oder kann es sein, angehängt an die Nachricht separat?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Nachricht ist ein byte-stream, es enthält auch einen header, aber das ist weniger relevant. Ich schlage vor, dass Sie eine von zwei Methoden. Ihre JSON-Objekt enthält ein Feld, das die byte-stream von der Binär-Datei. Alternativ gibt es die Adresse, wo die Datei heruntergeladen werden kann. Wenn die Binär-Datei ist kleiner als die vorherigen, sollte aber funktionieren. Ansonsten können Sie letzteren bevorzugen.
Seit RabbitMQ-message-payload ist nur ein binäres array, sollten Sie die Verschlüsselung Ihrer Nachricht Körper mit 3 Feldern:
Ich Stimme mit einer vorherigen Antwort zum einbetten einer Datei im json-Format.
Wenn Sie Kodieren Datei Daten in json bekommen Sie Platz verschwendet, da der json-die Flucht + unnötige CPU-Verbrauch, weil der json-Kodierung/Dekodierung der Datei data + benötigen Sie zum Lesen der Datei die Daten zweimal (einmal für die Deserialisierung von json und einmal mehr, es zu kopieren, wo es gehen muss)
Verwenden wir RabbitMQ und file-transfer. Es arbeitet ein wenig langsam, aber für die Aktualisierung von weit entfernten Kunden ist es duable. Ich würde empfehlen, dass Sie folgende Richtlinien: Erstellen Sie eine Struktur der Nachricht für jeden block, den Sie senden, mit dem Befehl, offset-und CRC32 -, Daten-Länge, maximale 60kByte pro block der Daten, geben blocks ein Zähler, ein sha256 am Ende, um sicherzustellen, dass Daten korrekt sind, stellen Sie tar optional, so dass die Daten viel kleiner sein kann und die übertragung ist schneller.. ein Verzeichnis Sache, um zu sehen, welche Dateien aktualisiert werden müssen... verwenden eine broadcast-Ereignis, um zu sehen, wer verfügbar ist, und aktualisieren 1 Kunde zu einem Zeitpunkt mit dem Kunden.Unternehmen.update orso, wo ein Kunde hört .Unternehmen. Spaß haben! p.s. wir schufen auch ein linux-Dienst, der startet automatisch beim Kunden.