🎄 Happy Holidays! 🥳
Most of Solace is closed December 24–January 1 so our employees can spend time with their families. We will re-open Thursday, January 2, 2024. Please expect slower response times during this period and open a support ticket for anything needing immediate assistance.
Happy Holidays!
Please note: most of Solace is closed December 25–January 2, and will re-open Tuesday, January 3, 2023.
Queue Provisioning issue
Hi
I am having difficulty provisioning a queue from a C# client application. The Solace Broker is running within a Docker container and the client application is running on the Docker host machine. This error is always thrown:
"Endpoint provisioning not allowed or not supported on session"
My understanding is that this happens because the Client Username that I am using to create a session with is based upon a client profile that does not have permission to create endpoints. I have checked this and it seems that the client profile does have the necessary permission so I am unclear as to why this error still occurs.
My client connects and the connection can be seen on the PubSub site. The Client Username that I am using to create a session with and connect is called ‘EnableAllClient’. This username is based upon a client profile called ‘EnableAll’.
The ‘EnableAll’ client profile has all settings set to true (including the ‘Allow client to create endpoints’ setting).
I used the following command to create the Docker container that is being used for Solace:
docker run -d -p 8080:8080 -p 55555:55555 -p:8008:8008 -p:1883:1883 -p:8000:8000 -p:5672:5672 -p:9000:9000 -p:2222:2222 --shm-size=2g --env username_admin_globalaccesslevel=admin --env username_admin_password=admin --name=solace solace/solace-pubsub-standard
Could you please advise me as to what I am doing wrong?
Thank you
Dan
Answers
-
Hi Dan,
Are you using the Solace .NET SDK? What are the connection details specified to connect to the broker?When the client connects to PubSub+, you can verify the client-username on PubSub+ Manager under the client connection properties tab.
You can see in the screenshot that my test client tried to authenticate with 'test' client-username, but is connected on 'default' - this is because 'test' client-username does not exist. As this is not the expected client-username, it might have different client-profile settings associated with it which may not allow you to create an endpoint.
Another place to check is the protocol specified for your hostname/IP in your application; either TCP, or nothing which defaults to TCP (eg. "tcp://localhost", "tcps://localhost" or "localhost"). If anything else is specified as the protocol (for example, http(s)), you could be seeing the "Endpoint provisioning not allowed or not supported on session" error.
1 -
Hello Dan, Can you provide some more info?
- What protocol/API are you using from C# Application to connect? (JMS/MQTT/..)?
- If using SMF based protocols (like JMS,JCSMP), can you confirm you are connecting to the right VPN ?
- Can you also confirm you are using the right username and password from your C# application ?
- You can also check the broker logs by dropping to the container shell (https://docs.solace.com/Configuring-and-Managing/SW-Broker-Specific-Config/Access-Solace-App-Shell.htm) and viewing (or tailing) /usr/sw/jail/logs/event.log
0 -
Hi
Thanks for the replies. I am using the nuget package ‘SolaceSystems.Solclient.Messaging (10.9.0)’. The connection details used to connect to the broker are:Secure Web Messaging Host: ws://localhost:8008
VPNName: defaultI have not listed the values of the username and password here but I can confirm I am setting them correctly.
On PubSub+ Manager, I can see the client-username under the client connection properties tab. The value is ‘EnableAllClient’ which is what I would expect. The authenticated client-username is also ‘EnableAllClient’.I have looked in event.log but cannot see anything regarding an endpoint provisioning not being allowed.
Maybe the issue relates to the choice of protocol for the host. I will experiment with that.
Thank you
Dan0 -
Hi Dan,
Upon further investigation, it is possible to use a WebSockets connection and do guaranteed messaging. To do this, you would need to enable the session property 'guaranteed delivery with web transport' in your application (.NET API version 10.9.0 or above is required).sessionProps.GdWithWebTransport = true
3