2017-02-20 5 views
0

Я использую MQTT-издатель, RabbitMQ и подписчик Mqtt. Я установил на RabbitMQ плагин для обозначения сообщений с меткой времени (rabbitmq_message_timestamp). Я создал AMQP Publisher, подписчика AMQP и подписчика MQTT, используя node.js и издателя MQTT с использованием Node-Red (и блока вывода MQTT), устанавливая тему для проверки URL-адреса сервера, имени пользователя и пароля пользователя RabbitMQ, keep = true и QoS.MQTT с RabbitMQ: я не могу прочитать временную метку RabbitMQ и очереди не накапливаются

1-я ПРОБЛЕМА) Когда я пользуюсь издателем AMQP и подписчиком AMQP, я могу получить (боковой подписчик) метку времени RabbitMQ, читая поле с помощью пути: msg.properties.timestamp. Но когда я использую MQTT Publiher и MQTT-подписчик, если я попытаюсь получить значение msg.properties.timestamp, окна nodejs говорят, что поле «свойства» не определено.

2-я ПРОБЛЕМА) Когда я публично высылаю сообщение с моим Node-Red MQTT Publisher (с темой «test»), если подписчик MQTT работает в тестовой очереди, он загружает сообщения, но если нет никаких Subribers on test очереди, консоль RabbitMQ сообщает, что тестовая очередь пуста. После остановки PUblisher MQTT, если я попытаюсь подключить MQTT Subscriber для проверки очереди, он получит только последнее сообщение.

Может ли кто-нибудь помочь мне решить эти проблемы?

+1

Какое качество обслуживания (QoS) вы используете для издателя? Вы настроили RabbitMQ для сохранения обмена (темы), который вы публикуете? – barny

+0

Я не связывал очередь с обменом темами (amq.topic). Теперь он накапливает сообщение. – Salva

ответ

1

В MQTT-сообщении нет места для хранения дополнительных свойств метаданных (например, отметка времени, о которой вы упоминаете).

Заголовки сообщений MQTT в значительной степени просто удерживают тему, QOS и сохраненный флаг.

Итак, если вы подписаны с узлом клиента Node-RED MQTT, который является единственными метаданными, которые будут доступны.

Смежные вопросы