RabbitMQ Application Integration

Dear all,

We need Chirpstack application server to publish device events to a RabbitMQ exchange, which is possible from version 3.7, according to the documentation, but when configuring the application, the Rabbit MQ integration is simply not available.

The only available integrations are the following ones:

  • MQTT
  • Azure Service-Bus
  • GCP Pub/Sub
  • HTTP
  • InfluxDB
  • myDevices
  • Pilot Things
  • Semtech LoRa Cloud
  • ThingsBoard.io

I’m running application server v3.14 (docker-compose version).

/ # chirpstack-application-server version

Thank you very much in advance!

It’s not per Application. I think it’s like the Kafka integration, for the whole “AS”

Hi chopmann,

As far as I understand, there are two kind of integrations with RabbitMQ.

  • As a backend, between the gateways and the AS, and thus replacing mosquitto (https://www.chirpstack.io/network-server/backends/amqp/). This is a Network Server config.
  • As an application integration, forwarding all the device events from a specific application to a specific external queue ([chirpstack site]/chirpstack.io/application-server/integrations/amqp/)

We need the second one. It is true though, that the documentation has a placeholder for configuring this, that seems to be a general configuration, and not application specific ([chirpstack site]/application-server/install/config/)

  # AMQP / RabbitMQ.
  # Server URL.
  # See for a specification of all the possible options:

  # Event routing key template.
  # This is the event routing-key template used when publishing device
  # events.
  event_routing_key_template="application.{{ .ApplicationID }}.device.{{ .DevEUI }}.event.{{ .EventType }}"

This configuration shall enable specifying a rabbit exchange, but it seems this is not possible and it will always use the “AMQP Default” RabbitMQ exchange. Please, feel free to correct me if I’m mistaken.
The routing key might specify the name of the queue, but it will only be possible to forward all the events to that single queue, not being able to make bindings to different queues through a routing key template.

There are also configurations for the rest of application integrations at general level, that are also available per-application in the Web User Interface, so I’m a little bit confused.

I also tried to configure these parameters in the AS config file, and I was unable to forward device events to Rabbit.