# MQTT Broker RabbitMQ

**URL:** <https://forum.instar.com/t/mqtt-broker-rabbitmq/28223>\
**Category:** INSTAR MQTT\
**Created:** [1. August 2021 um 08:45 UTC](https://forum.instar.com/t/mqtt-broker-rabbitmq/28223 "2021-08-01T08:45:52Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![ijen](https://forum.instar.com/letter_avatar_proxy/v4/letter/i/e480ec/32.png) [@ijen](https://forum.instar.com/u/ijen)\
**Post date:** [1. August 2021 um 08:45 UTC](https://forum.instar.com/t/mqtt-broker-rabbitmq/28223/1 "2021-08-01T08:45:52Z")

</div>

Hallo Mike,

bisher habe ich eine IN-8015 (webcam1) an einem Mosquitto MQTT-Broker laufen. Alles okay. Einbindung in Node-Red funktioniert super.

Mein Produktiv-MQTT-Broker ist aber ein RabbitMQ. Daran habe ich eine zweite IN-8015 (webcam2) angeschlossen. Funktioniert nicht.  
Der Broker ist auf tcp1884, SSL wird nicht verwendet, aber MQTT Credentials (identisch zu Mosquitto). Hab ich auf der Kamera eingetragen und dann Restart.

Es kommen beim Reboot Messages /instar/webcam2/status/network/#.  
Und alle 6s /instar/webcam2/status/connection = {„val“:„offline“}

Im Debug-Log vom RabbitMQ finde ich viele Meldungen:  
MQTT connection „192.168.1.33:49250 → 172.19.0.13:1883“ will terminate because peer closed TCP connection

(192.168.1.33 ist die webcam2, der RabbitMQ ist gedockert und hat intern tcp1883)

Irgendwie klemmt die Kommunikation zwischen der Kamera und RabbitMQ.  
Die komplette Hausautomatisierung mit den verschiedensten MQTT-Sendern läuft über den Broker. MQTT 3.1.0 oder 3.1.1 wird problemlos verarbeitet.

Testweise habe ich auf webcam1 die IP-Adresse des MQTT-Brokers von Mosquitto auf RabbitMQ geändert. Alle anderen Parameter nicht angefaßt. Gleiches Fehlerbild wie bei webcam2.

Wo könnte ich da suchen bzw. an welchen Parametern schrauben?

Grüße aus dem Rheinland  
Ingo

---

<div class="post-metadata">

**Author:** ![m.polinowski](https://forum.instar.com/user_avatar/forum.instar.com/m.polinowski/32/458_2.png) [@m.polinowski](https://forum.instar.com/u/m.polinowski)\
**Post date:** [1. August 2021 um 09:49 UTC](https://forum.instar.com/t/mqtt-broker-rabbitmq/28223/2 "2021-08-01T09:49:24Z")

</div>

> [@ijen](#):
>
> „192.168.1.33:49250 → 172.19.0.13:1883“

Die Zeile macht mir was Sorgen. Läuft der Container mit `--net=host` ? Und ist er über eine IP im 192.168.1er Netz erreichbar? Und ist es dem „Broker bekannt“ dass er in diesem Netz arbeitet? Kann man z.B. den MQTT Explorer (oder MQTT.fx) mit dem Broker verbinden, indem man eine 192er IP Adresse angibt?

---

<div class="post-metadata">

**Author:** ![ijen](https://forum.instar.com/letter_avatar_proxy/v4/letter/i/e480ec/32.png) [@ijen](https://forum.instar.com/u/ijen)\
**Post date:** [1. August 2021 um 11:31 UTC](https://forum.instar.com/t/mqtt-broker-rabbitmq/28223/3 "2021-08-01T11:31:25Z")

</div>

Hallo Mike,

nein kein net=host. Es sind nur einzelne Ports aus dem Container freigegeben.  
Der RabbitMQ ist im 192.168.1.0 Netz aktiv und von überall erreichbar. Darin ist die gesamte Hausautomatisierung.  
Die 172.19.0.13 ist die interne IP vom RabbitMQ in seinem Container. Die hat er geloggt, da er seine externe IP außerhalb vom Container nicht kennt/braucht.  
Mit MQTT-Explorer hab ich mir den RabbitMQ und den Mosquitto (auf zweitem Dockerhost mit anderer IP) angeschaut und die Unterschiede zwischen webcam1 und webcam2 angeschaut.  
Der RabbitMQ ist deshalb bei mir aktiv weil er eine Webgui hat und man gut sehen kann welche MQTT-Sensoren und -Aktoren Daten senden.

---

<div class="post-metadata">

**Author:** ![m.polinowski](https://forum.instar.com/user_avatar/forum.instar.com/m.polinowski/32/458_2.png) [@m.polinowski](https://forum.instar.com/u/m.polinowski)\
**Post date:** [2. August 2021 um 05:53 UTC](https://forum.instar.com/t/mqtt-broker-rabbitmq/28223/4 "2021-08-02T05:53:35Z")

</div>

Ich hatte es jetzt auch einmal probiert mit einem sehr simplen Setup und ich sehe da eine Fehlermeldung im `tmpfs/mqtt-log` der Kamera:

```auto
[Error] Session::listen: Protocol error
[Error] Failed to subscribe to topics: Session::subscribe: no connection.
[Info] Retry...

```

Wir sind momentan noch nicht sicher wo das herkommt. Allerdings hatte ich auch mit RabbitMQ bislang auch keine Erfahrung. Eventuell fehlt da noch was bei der Konfiguration.

**docker-compose.yml**

```auto
broker:
    image: rabbitmq:3.9.1-alpine
    command: "/bin/ash -c \"rabbitmq-plugins enable rabbitmq_mqtt; rabbitmq-server\""
    ports:
      - "1883:1883"
    volumes:
      - "/opt/rabbitmq:/etc/rabbitmq"

```

Oder wenn man das Host Netzwerk nutzen möchte:

```auto
version: "3.9"

services:

  broker:
    image: rabbitmq:3.9.1-alpine
    command: "/bin/ash -c \"rabbitmq-plugins enable rabbitmq_mqtt; rabbitmq-server\""
    network_mode: "host"
    volumes:
      - "/opt/rabbitmq:/etc/rabbitmq"

```

Und mit einer RabbitMQ Config:

**rabbitmq.conf**

```auto
mqtt.listeners.tcp.default = 1883

mqtt.allow_anonymous = true
mqtt.default_user = admin
mqtt.default_pass = instar

default_user = admin
default_pass = instar

loopback_users = none

default_permissions.configure = .*
default_permissions.write = .*
default_permissions.read = .*

mqtt.vhost = /
mqtt.exchange = amq.topic
# 24 hours by default
mqtt.subscription_ttl = 86400000
mqtt.prefetch = 10

```

---

<div class="post-metadata">

**Author:** ![ijen](https://forum.instar.com/letter_avatar_proxy/v4/letter/i/e480ec/32.png) [@ijen](https://forum.instar.com/u/ijen)\
**Post date:** [2. August 2021 um 15:35 UTC](https://forum.instar.com/t/mqtt-broker-rabbitmq/28223/5 "2021-08-02T15:35:20Z")

</div>

Hallo Mike,

meine Config sieht genauso aus wie oben. Nur anonymous MQTT ist nicht erlaubt.  
Die Kamera meldet sich aber mit den MQTT credentials erfolgreich an.  
Ich hab den Traffic zwischen IN-8015 und RabbitMQ mit Wireshark mitgeschnitten.  
Der sieht auf den ersten Blick sinnvoll aus. Die Kamera sendet eine Menge Subscribes und vom Broker kommen ACK. Wenn Du mir eine PN gibst, kann ich den Wireshark-Mitschnitt rübersenden.  
Merkwürdig sind im RabbitMQ MQTT Log nur:

```auto
2021-08-02 16:07:23.519 [info] <0.1132.0> accepting MQTT connection <0.1132.0> (192.168.1.33:55046 -> rabbitmq:1883, client id: webcam2)
2021-08-02 16:07:23.525 [info] <0.1132.0> MQTT connection "192.168.1.33:55046 -> rabbitmq:1883" will terminate because peer closed TCP connection
2021-08-02 16:07:23.527 [info] <0.1209.0> Closing all channels from connection '192.168.1.33:55046 -> rabbitmq:1883' because it has been closed
...
2021-08-02 16:08:06.054 [error] <0.1663.0> MQTT: a socket write failed, the socket might already be closed

```

Eine erfolgreiche Anmeldung sieht so aus:

```auto
2021-08-02 16:07:25.648 [info] <0.1350.0> accepting MQTT connection <0.1350.0> (192.168.1.73:56520 -> rabbitmq:1883, client id: sp111-03)

```

Grüße  
Ingo

---

<div class="post-metadata">

**Author:** ![m.polinowski](https://forum.instar.com/user_avatar/forum.instar.com/m.polinowski/32/458_2.png) [@m.polinowski](https://forum.instar.com/u/m.polinowski)\
**Post date:** [3. August 2021 um 07:23 UTC](https://forum.instar.com/t/mqtt-broker-rabbitmq/28223/6 "2021-08-03T07:23:09Z")

</div>

Hallo,

wir schauen gerade ob es eventuell ein Problem mit der auf der Kamera liegenden MQTT library ist. Wenn es nach dem Update immer noch Probleme mit RabbitMQ gibt, würde der Wireshark Mitschnitt sicher helfen. Aber erstmal auf das Update warten - eventuell löst das ja schon das Problem. Oder führt zumindest zu einer besseren Fehlermeldung.

---

<div class="post-metadata">

**Author:** ![ijen](https://forum.instar.com/letter_avatar_proxy/v4/letter/i/e480ec/32.png) [@ijen](https://forum.instar.com/u/ijen)\
**Post date:** [3. August 2021 um 08:56 UTC](https://forum.instar.com/t/mqtt-broker-rabbitmq/28223/7 "2021-08-03T08:56:46Z")

</div>

Perfekt. So machen wir das.
