Custom Parameters
As mentioned in Getting Started - Custom Parameters as an end user, an Application Developer has the opportunity to customize their Service Instance by using custom parameters.
consumer_timeout
RabbitMQ's consumer_timeout parameter, see Delivery Acknowledgement Timeout,
can be specified via the custom parameter consumer_timeout.
An integer value greater than or equal to 1800000 is expected.
The default value is 1800000.
The unit is milliseconds.
tls-protocols
You can specify the TLS protocol version via the custom parameter tls-protocols. The custom parameter tls-protocols
correlates with RabbitMQ's configuration parameter ssl_options.versions, see
Limiting TLS Versions Used by the Server.
An array with protocol versions is expected. The allowed protocol version values are tlsv1.3 and tlsv1.2.
tls-ciphers
You can limit the TLS ciphers via the custom parameter tls-ciphers. The custom parameter tls-ciphers correlates with
RabbitMQ's configuration parameter ssl_options.ciphers, see Configuring Cipher Suites.
An array with cipher names is expected.
There is no validation enabled for the user provided value and therefore existing instances can break when applying this parameter.
Use RabbitMQ Plugins
a9s Messaging allows to enable the following RabbitMQ plugins:
- rabbitmq_consistent_hash_exchange
- rabbitmq_federation
- rabbitmq_federation_management
- rabbitmq_mqtt
- rabbitmq_sharding
- rabbitmq_shovel
- rabbitmq_shovel_management
- rabbitmq_stomp
- rabbitmq_tracing
- rabbitmq_webstomp
- rabbitmq_webmqtt
Plugin Activation
You can activate RabbitMQ plugins with the cf create-service and
cf update-service commands using additional configuration parameters.
cf create-service a9s-messaging40 rabbitmq-single-small my-messaging-service \
-c '{ "plugins": ["rabbitmq_shovel", "rabbitmq_shovel_management"] }'
cf update-service my-messaging-service \
-c '{ "plugins": ["rabbitmq_shovel", "rabbitmq_shovel_management"] }'
Plugins for Protocols
Some plugins that can be enabled with a9s Messaging provide additional protocols for use with RabbitMQ. The usernames
and passwords for these protocols are the same as with the default ACMQ protocol. Protocols enabled via plugin will be
set to the default \ RabbitMQ vhost.
| Protocal | TCP Port | SSL Port | Further information |
|---|---|---|---|
| MQTT | 1883 | 8883 | RabbitMQ MQTT Docs |
| WebMQTT | 15675 | 15676 | RabbitMQ MQTT Docs |
| STOMP | 61613 | 61614 | RabbitMQ STOMP Docs |
| WebSTOMP | 15674 | 15673 | RabbitMQ STOMP Docs |
Create Messaging Users
a9s Messaging allows to create new users with different roles (permissions) by creating service keys.
The possible roles are:
- management
- policymaker
- monitoring
- administrator
You can read more about RabbitMQ roles and permissions here.
Create a New Role
You can create a new user with specific permissions (roles) giving the role following custom parameter. This parameter
receives an array of roles:
cf create-service-key my-messaging-service my-key -c '{"roles": ["administrator", "management"]}'
High Availability/Quorum Queues in a9s Messaging 4.X and above
High availability queues were available with RabbitMQ 3.X, but these were removed with the release of RabbitMQ 4.X. Furthermore, the mirrored classic queues versions were removed and the still existing classic queues are not able to be replicated anymore.
For a9s Messaging 4.X and above, high availability is available by default for all quorum queues: The quorum queues are designed to ensure data safety and reliability by enforcing message persistency and message/queue replication across cluster nodes. Classic queues can be used instead for improved performance, at the expense of reliability and data safety.
Please see the official RabbitMQ documentation for more information about quorum queues.
Using Custom Policies in RabbitMQ
To create and use custom policies, please see Parameters and Policies — RabbitMQ