Spring Cloud Stream exception: "doesn't support message NACK" after upgrading Solace Binder to v5.x

JamilAhmed
JamilAhmed Member, Employee Posts: 20 Solace Employee

Are you seeing this exception from your Spring Cloud Stream application?

Caused by: org.springframework.messaging.MessagingException: The Solace PubSub+ Broker doesn't support message NACK capability, <inbound adapter c46eed03-a058-4b1d-9e8c-c402518f736c>
at com.solace.spring.cloud.stream.binder.inbound.JCSMPInboundChannelAdapter.doStart(JCSMPInboundChannelAdapter.java:113) ~[spring-cloud-stream-binder-solace-core-5.5.0.jar:na]
at org.springframework.integration.endpoint.AbstractEndpoint.start(AbstractEndpoint.java:155) ~[spring-integration-core-6.3.4.jar:6.3.4]
at org.springframework.cloud.stream.binder.AbstractMessageChannelBinder.doBindConsumer(AbstractMessageChannelBinder.java:536) ~[spring-cloud-stream-4.1.3.jar:4.1.3]
... 21 common frames omitted

(Maybe you were already successfully using the Solace Binder and just tried to upgrade to the latest version?)

The cause is the version of the PubSub+ Broker you have connected to being too old. Since version 5.x, the binder now has a dependency on a broker feature called "Message NACK" - essentially a subscriber of a message now being able to explicitly reject it's consumption.

This feature got introduced from Broker version 10.2.1 (Dec 15, 2022).

To use the latest Solace Binder your broker needs to be that version or newer. If you cannot upgrade yet, Binder version 4.2 would be the latest you can adopt until the broker upgrade.

More info available in the Solace PubSub+ Binder 5.0 Migration Guide.

Comments