AMQP Users
There are four AMQP access points available to device drivers and support services:
- ase.exchange.api (fanout)
 - Exchange to publish API request, a callback queue needs to be created to subscribe to for the response
 - ase.exchange.telemetry (headers)
 - Exchange to publish telemetry data, or to bind a queue for subscribing to telemetry data
 - ase.exchange.driver (headers)
 - Exchange to bind a custom queue to and subscribe to process incoming messages
 - ase.exchange.core (headers)
 - Exchange to publish specific messages to core services
 
The following four users are created on the RabbitMQ broker with specific permissions. The parameters below are taken directly from the Go code, but should be easy to understand. For details on RabbitMQ authorisation see "Authorisation: How Permissions Work" section of the RabbitMQ documentation.
API
username := os.Getenv("ASE_CORE_API_USER")
password := os.Getenv("ASE_CORE_API_PASSWORD")
vhost := "/"
configureRegexp := `^ase\.callback\.api\.`
writeRegexp := `^ase\.exchange\.api$`
readRegexp := `^ase\.callback\.api\.`
            Using the default parameters, the username is "api-user" and the
                password is autogenerated (if left blank in the configuration). The password is
                stored in a kubernetes secret.
- Create queues with the 
"ase.callback.api."prefix - Consumer messages from these 
"ase.callback.api."prefixed queues - Publish to the 
"ase.exchange.api"exchange 
Device Driver
username := os.Getenv("ASE_CORE_DEVICE_DRIVER_USER")
password := os.Getenv("ASE_CORE_DEVICE_DRIVER_PASSWORD")
vhost := "/"
configureRegexp := `^ase\.queue\.driver\.`
writeRegexp := `^(ase\.exchange\.core|ase\.queue\.driver\..*)$`
readRegexp := `^(ase\.exchange\.driver|ase\.queue\.driver\..*)$`
            Using the default parameters the username is "device-driver-user"
                and the password is autogenerated (if left blank in the configuration). The password
                is stored in a kubernetes secret.
- create queues with the 
"ase.queue.driver."prefix - bind these 
"ase.queue.driver."prefixed queues to the"ase.exchange.driver"exchange - consume messages from these 
"ase.queue.driver."prefixed queues - publish to the 
"ase.exchange.core"exchange 
Telemetry
username := os.Getenv("ASE_CORE_TELEMETRY_USER")
password := os.Getenv("ASE_CORE_TELEMETRY_PASSWORD")
vhost := "/"
configureRegexp := "^$"
writeRegexp := `^ase\.exchange\.telemetry$`
readRegexp := "^$"
            Using the default parameters, the username is "telemetry-user" and
                the password is autogenerated (if left blank in the configuration). The password is
                stored in a kubernetes secret.
- publish to the 
"ase.exchange.telemetry"exchange 
Support
username := os.Getenv("ASE_CORE_SUPPORT_USER")
password := os.Getenv("ASE_CORE_SUPPORT_PASSWORD")
vhost := "/"
configureRegexp := `^(ase\.queue\.telemetry\-support\-|ase\.queue\.support\-)`
writeRegexp := `^(ase\.queue\.telemetry\-support\-.*|ase\.queue\.support\-.*|amq\.gen\-.*|amq\.default)$`
readRegexp := `^(ase\.exchange\.telemetry|ase\.queue\.telemetry\-support\-.*|ase\.queue\.support\-.*)$`
            Using the default parameters, the username is "support-user" and the
                password is autogenerated (if left blank in the configuration). The password is
                stored in a kubernetes secret.
- create queues with the 
"ase.queue.telemetry-support-"prefix - bind these 
"ase.queue.telemetry-support-"prefixed queues to the"ase.exchange.telemetry"exchange - consume messages from these 
"ase.queue.telemetry-support-"prefixed queues - create queues with the 
"ase.queue.support-"prefix - consume messages from these 
"ase.queue.support-"prefixed queues - publish to 
"amq.gen-"prefixed queues (incoming messages on"ase.queue.support."will use a replyTo of"amq.gen-")