Search code examples
ssljmsactivemq-classicquarkusamqp

ActiveMQ amqp+ssl in Quarkus JMS


I have a problem with use my ActiveMQ broker in Quarkus app. To first usage I wanna try example from the official website, and I have everything exactly like in examples (PriceConsumer, PriceProducer, Resource, quarkus-qpid-jms dependency, and quarkus.qpid-jms - username/password), except quarkus.qpid-jms.url, because there are endpoints with amqp, but I can't use that, I have endpoints with amqp+ssl protocols.

When I've tried run application with this endpoints, it return errors:

"loggerName":"org.apache.qpid.jms.provider.ProviderFactory",
"level":"ERROR",
"message":"Failed to create Provider instance for amqp+ssl, due to: {}",
"threadName":"FailoverProvider: async work thread",
(...)
"exception":{"refId":1,"exceptionType":"java.io.IOException","message":"Provider scheme NOT recognized: [amqp+ssl]"

How could I configure that example for amqp+ssl in Quarkus? It sounds easy, but I couldn't find anything about that (and I'm a really beginner in brokers topic). All protocols which I have to my ActiveMQ: amqp+ssl / ssl / wss / mqtt+ssl / stomp+ssl


Solution

  • The Qpid JMS client you're using doesn't support the scheme amqp+ssl (as noted in the exception's message). You need to use amqps instead as noted in the documentation.

    Keep in mind that the connector configuration in your activemq.xml (e.g. amqp+ssl, ssl, wss, mqtt+ssl, stomp+ssl) is for the broker only. Each client implementation has its own unique connection support whether than be via a URL or something else. You can't use the broker's configuration on a client and expect it to work.