Custom Queue Names when using Spring Cloud Stream binder for Solace PubSub+
The Spring Expression Language (SpEL for short) is a powerful expression language that supports querying and manipulating an object graph at runtime. In Solace Binder, we can use the SpEL to specify queue name expressions to generate custom queue names.
Not all properties present in the application configuration are available for use while constructing a SpEL expression. Here is a list of supported context variables available for use in the expression.
The properties.solace
and properties.spring
throws open all the properties defined spring.cloud.stream.bindings.<binder_name>.consumer
and spring.cloud.stream.solace.bindings.<binder_name>.consumer
for use in the SpEL expression.
Consider an example configuration.
spring: cloud: function: definition: uppercase stream: bindings: uppercase-in-0: destination: manualackqueue binder: solace-broker group: myconsumergroup consumer: concurrency: 1 max-attempts: 3 uppercase-out-0: destination: uppercase/topic binder: solace-broker binders: solace-broker: type: solace environment: solace: java: host: 'tcp://xxxx:55554' msgVpn: default clientUsername: default clientPassword: default connectRetries: -1 reconnectRetries: -1 solace: bindings: uppercase-in-0: consumer: provisionDurableQueue: true queueNamePrefix: QNAME errorMsgTtl: 10000 queueNameExpression: "'QUEUE-' + \ properties.solace.queueNamePrefix.toString() + '-' + \ properties.spring.concurrency.toString() + '-' + \ properties.spring.maxAttempts.toString() + '-' + \ properties.solace.errorMsgTtl.toString() + '-' + \ (properties.solace.provisionDurableQueue ? 'AUTO' : 'MANUAL')"
This will produce the following custom queue name:
QUEUE-QNAME-1-3-10000-AUTO
Note: Custom properties are not supported in the SpEL expression.
For more information on custom names for queues and error queues, refer to this blog Custom Name for your Queues when using Spring Cloud Stream Binder for Solace PubSub+