🎄 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.

Error registering listner:Transactions not supported [condition = amqp:not-implemented]

Tripti
Tripti Member Posts: 8

Hello,

I am trying to register listeners dynamically to the queues whose names can be fetched at runtime. I am using the JmsListenerEndpointRegistrar from spring for dynamic listener registration. My application is started, and connection to solace broker gets established but the listener invocation fails with the following error -

o.a.q.j.JmsConnection.onConnectionEstablished 1353 Connection ID:c5e581a2-bdf8-4996-b20b-9649e8f4f0fb:5 connected to server: amqps://801c710c-85e4-4f7a-8a41-6f2f3149e06d.messaging.eu10.mq.messagebroker.cloud.sap:7027
o.a.q.j.p.a.b.AmqpResourceBuilder.handleClosed 202 Open of resource:(JmsSessionInfo { ID:c5e581a2-bdf8-4996-b20b-9649e8f4f0fb:5:1 }) failed: Transactions not supported [condition = amqp:not-implemented]

My listener configuration looks like this -

while the JMS connection factory is as follows -

What is missing here for the transaction management? As I vaguely understand from the error, the kind of transaction management being set is not supported by the solace broker. Does it require that an explicit transaction manager implementation is injected?


Best regards,

Tripti

Best Answer

Answers

  • amackenzie
    amackenzie Member, Employee Posts: 269 Solace Employee
    edited June 2022 #3 Answer ✓

    The Solace implementation of AMQP does not support transactions.

    AMQP 1.0 Protocol Conformance (solace.com)

    It looks like you are using the Qpid JMS provider with your Spring JMS application? Qpid JMS uses AMQP as its transport protocol.

    Is it possible to use the Solace JMS provider instead? Solace JMS does support local/session transactions AND XA transactions.

    Spring Boot Autoconfig (JMS) | Solace API Tutorials

  • Tripti
    Tripti Member Posts: 8

    Thanks for your reply. Unfortunately we cannot move to the suggested provider.

  • Tripti
    Tripti Member Posts: 8

    @amackenzie Is there a plan to support transactions with amqp?

    Regards,

    Tripti

  • amackenzie
    amackenzie Member, Employee Posts: 269 Solace Employee

    @Tripti it is not on our near-mid term roadmap so, no plans.

    Can I ask why you cannot use the Solace JMS provider? It is not vendor lock in by doing so as the JMS API is a standard. Any apps you write would be able to be used with other vendors brokers just by swapping the provider JARs. In fact, you could probably use the above code in Solace JMS without modification.

    It might be worth a look if transactions are important to you.

  • Tripti
    Tripti Member Posts: 8

    Hi @amackenzie, qpid-jms is the recommended provider from our organization. Others might be required to meet security criteria for use.

    Best regards,

    Tripti

  • dreamoka
    dreamoka Member Posts: 56 ✭✭✭

    Can I ask whether Solace JMS provider supports AMQP protocol? May I know what protocol is Solace JMS provider using?

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

    Hey @dreamoka , the Solace JMS API uses our SMF Solace Message Format protocol on the wire… the same as our Java JCSMP API, C, C#, JavaScript/Node APIs, etc. Using SMF as the wireline means the API will have access to many Solace features as possible. Our JMS API has been used within massive enterprises, banks, telcos, insurance companies for more than 15 years. And supports transactions, both Session and XA.