Spring Cloud Stream- Consumer config, queue name included in topic subscription list

Subhasish Bhabani
Subhasish Bhabani Member Posts: 1
edited May 2021 in General Discussions #1

Hi
We are using spring cloud stream to consume events from topics defined by publisher application. We have Organization wide agreed topic hierarchy taxonomy for all applications across the board and subscription ACL (default disallowed) is aligned only to that agreed taxonomy. In the binder property spring.cloud.stream.bindings.notification-in.destination we are specifying the queue name and the list of topic to subscribe are mentioned in queueAdditionalSubscriptions. We are consciously leveraging the feature of auto queue creation and adding subscription to it by solace binder under the cover. We are facing failure of the cloud stream app as it is trying to add subscription in the queue with a topic name as mentioned in the binding property destination. The error here is well understood i.e. ' c.s.j.JCSMPErrorResponseException: 403: Subscription ACL Denied '. Is there any way of ignoring only this topic subscription which is basically is the desired name of the queue? That is not the intended topic to subscribe events from. As it fails at the first place the actual topic list mentioned in queueAdditionalSubscriptions are not added in subscription list in the queue. Looking ahead to get suggestion how we can achieve this?

Comments

  • marc
    marc Member, Administrator, Moderator, Employee Posts: 959 admin

    Hi @Subhasish Bhabani,
    This is indeed a known issue, it is captured in the github repo here: https://github.com/SolaceProducts/solace-spring-cloud/issues/48

    The work around is to configure the queue and topic subscriptions via your CI/CD pipeline and have the Spring Cloud Stream app not provision the queue and subscriptions by setting provisionDurableQueue and provisionSubscriptionsToDurableQueue to false. I know this goes against your decision of consciously leveraging the feature of auto queue creation and adding of the subscription, but out of curiosity is that something that you are planning on using in production environments or just in development?