🎄 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

dculley
dculley Unconfirmed, Member Posts: 6

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

Tagged:

Answers

  • solaceleah
    solaceleah Member, Employee Posts: 8 Solace Employee

    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.

  • nram
    nram Member, Employee Posts: 80 Solace Employee

    Hello Dan, Can you provide some more info?

  • dculley
    dculley Unconfirmed, Member Posts: 6

    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: default

    I 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
    Dan

  • dculley
    dculley Unconfirmed, Member Posts: 6

    Hi,

    Turns out it was the choice of protocol. Connecting using 'tcp://locahost:55555' allowed the queue to provision correctly.

    Thank you for guiding me in the right direction, much appreciated.

    Dan

  • dculley
    dculley Unconfirmed, Member Posts: 6

    Sorry, that should have read

    'tcp://localhost:55555'

  • Aaron
    Aaron Member, Administrator, Moderator, Employee Posts: 644 admin

    Are you saying that you're using the C# .NET Solace API, and all you did was change the port from 8008 (websockets) to 55555 (standard SMF) and it just worked?? No other changes?

  • dculley
    dculley Unconfirmed, Member Posts: 6

    Hi Aaron,

    Yes thats right. I literally changed from ws to tcp (including a change in port) using the C# .NET Solace API, and then it started working. I don't know why it didn't work previously.

    Thanks

    Dan

  • solaceleah
    solaceleah Member, Employee Posts: 8 Solace Employee

    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

  • dculley
    dculley Unconfirmed, Member Posts: 6

    Thanks for investigating this.