2017-02-20 1 views
0

Ich benutze einen MQTT - Publisher, RabbitMQ und einen Mqtt - Abonnenten. Ich habe auf RabbitMQ das Plugin installiert, um die Nachrichten mit dem Zeitstempel zu versehen (rabbitmq_message_timestamp). Ich habe einen AMQP-Publisher, einen AMQP-Abonnenten und einen MQTT-Abonnenten mit node.js und einem MQTT-Publisher mit Node-Red (und dem MQTT-out-Block) erstellt, um das Thema zum Testen der Server-URL, des Benutzernamens und des Kennworts des RabbitMQ-Benutzers festzulegen. behalten = wahr und keine QoS. Wenn ich einen AMQP Publisher und einen AMQP Subscriber verwende, kann ich den Timestamp von RabbitMQ (Seite Subscriber) abrufen, indem ich das Feld mit dem Pfad msg.properties.timestamp lese. Aber wenn ich einen MQTT Publiher und einen MQTT-Abonnenten verwende, wenn ich versuche, den Wert von msg.properties.timestamp abzurufen, sagt das Fenster nodejs, dass das Feld "properties" nicht definiert ist. Wenn ich eine öffentliche Nachricht mit meinem Node-Red MQTT Publisher (mit Thema "test") ablege, wenn ein MQTT-Abonnent in der Testwarteschlange läuft, lädt er die Nachrichten herunter, aber wenn keine Subribers im Test sind Warteschlange, sagt die RabbitMQ-Konsole, dass die Testwarteschlange leer ist. Wenn ich nach dem Stoppen des MQTT-Moduls versuche, den MQTT-Abonnenten mit der Testwarteschlange zu verbinden, erhält er nur die letzte Nachricht.MQTT mit RabbitMQ: Ich kann den Timestamp von RabbitMQ nicht lesen und Warteschlangen sammeln sich nicht an

Kann mir jemand helfen, diese Probleme zu lösen?

+1

Welche Quality of Service (QoS) verwenden Sie für den Publisher? Haben Sie RabbitMQ so konfiguriert, dass der Austausch (das Thema), an dem Sie veröffentlichen, erhalten bleibt? – barny

+0

Ich habe die Warteschlange nicht mit dem Themenaustausch (amq.topic) verbunden. Jetzt sammelt es Nachricht. – Salva

Antwort

1

In einer MQTT-Nachricht gibt es keinen Speicherort für die zusätzlichen Metadateneigenschaften (z. B. den von Ihnen angegebenen Zeitstempel).

MQTT Nachrichtenheader halten ziemlich einfach das Thema, QOS und ein beibehaltenes Flag.

Wenn Sie also mit dem Node-RED-MQTT-Clientknoten abonnieren, sind dies die einzigen Metadaten, die verfügbar sind.

Verwandte Themen