Our client is using Solace PubSub+ broker version 9.25 and are not going to move to the version >10.2, therefore we have to get our application working with the version 9.25 of broker.
Previously we used Java 8 and Spring Boot 2 and “com.solace.spring.cloud:spring-cloud-starter-stream-solace:3.4.0”.
The config for processor was:
spring:
cloud:
function:
# receiveSecurities if message is found to be an array of securities
definition: receiveSecurity
stream:
binders:
local-solace:
type: solace
environment:
solace:
java:
host: tcp://x.x.x.x:nnnn
msgVpn: default
clientUsername: default
clientPassword: default
connectRetries: 3
connectRetriesPerHost: 0
reconnectRetries: 3
bindings:
#The bindings section is used to define your input and output channels.
receiveSecurity-in-0:
destination: client.hostName.securities
#The presence of "group" tells the binder to follow the "consumer group" pattern; if not present the "publish-subscribe" pattern will be used.
group: hostName
consumer:
concurrency: 5
solace:
bindings:
# receiveSecurities-in-0 if message is found to be an array of securities
receiveSecurity-in-0:
consumer:
#Queue should not be created by the application
provisionDurableQueue: false
provisionErrorQueue: false
provisionSubscriptionsToDurableQueue: false
#Avoid the scst prefix etc
queueNamePrefix: ""
useFamiliarityInQueueName: false
useDestinationEncodingInQueueName: false
useGroupNameInQueueName: false
The publisher was publishing to:
spring
cloud
solace
bindings:
#The bindings section is used to define your input and output channels.
sendSecurity-out-0:
#Publishes to a TOPIC
destination: client/hostName/securities
#destination: scst/wk/trdapps/plain/cibc/trdapps/securities
binder: local-solace
and inside the Solace GUI we have set for:
the queue: client.hostName.securities
the topic: client/hostName/securities
All this was was working well, untill we moved to Java version 17 and Spring Boot version 3.
The client configuration does not work any more.
The following versions can not connect to the broker:
"com.solace.spring.cloud:spring-cloud-starter-stream-solace:3.4.0"
"com.solace.spring.cloud:spring-cloud-starter-stream-solace:5.0.0"
"com.solace.spring.cloud:spring-cloud-starter-stream-solace:5.4.0"
The only version that it could connect is:
"com.solace.spring.cloud:spring-cloud-starter-stream-solace:4.2.0"
Our aim is still to connect to the same queue, as client is the one who chooses the name of the queue. However, using the same config as above I am getting following errors:
[main] c.s.s.c.s.b.p.SolaceQueueProvisioner: Creating durable queue scst/wk/hostName/plain/client.hostName.securities for consumer group hostName
[main] c.s.s.c.s.b.p.SolaceQueueProvisioner: Durable queue provisioning is disabled, scst/wk/hostName/plain/clent.hostName.securities will not be provisioned nor will its configuration be validated
[main] c.s.s.c.s.b.p.SolaceQueueProvisioner: Testing consumer flow connection to queue scst/wk/hostName/plain/client.hostName.securities (will not start it)
[Context_2_ReactorThread] c.s.c.u.LogWrapper: Client-1: Got BIND ('scst/wk/hostName/plain/client.hostName.securities') Error Response (503) - Unknown Queue
[main] c.s.s.c.s.b.p.SolaceQueueProvisioner: Failed to connect test consumer flow to queue scst/wk/hostName/plain/nc.client.hostName.securities. Provisioning is disabled, queue was not provisioned nor was its configuration validated.
JCSMPErrorResponseException: 503: Unknown Queue
How can I disable that prefix “scst/wk/hostName/plain/” appearing in the queue name?
I alreaday used disabling of the prefix elements:
solace:
bindings:
# receiveSecurities-in-0 if message is found to be an array of securities
receiveSecurity-in-0:
consumer:
#Queue should not be created by the application
provisionDurableQueue: false
provisionErrorQueue: false
provisionSubscriptionsToDurableQueue: false
#Avoid the scst prefix etc
queueNamePrefix: ""
useFamiliarityInQueueName: false
useDestinationEncodingInQueueName: false
useGroupNameInQueueName: false