DMQ Eligible flag in Java different libraries

Options

After some tests using JCSMP API, I assumed it is necessary to set this flag on the producer side to make the Dead Message Queue features working.

Now, I am testing my new applications that use the Spring Cloud Stream with the Solace PubSub+ Binder and just see this parameter on the consumer side (Is that right?), which makes more sense to me, because reinforces the idea of decoupling the publisher of the consumer.

Since I would like to define standards in my applications (both Java traditional and Spring Boot applications), using the JCSMP API, can I do the configuration on the consumer side as well?

Best Answer

  • marc
    marc Member, Administrator, Moderator, Employee Posts: 921 admin
    #2 Answer ✓
    Options

    Hi @murillocg,

    I wanted to respond quickly before I have to run out the door so there is more context here (maybe an interesting read), but our best practice would be to always set DMQ Eligible to true so the Consumer can make the call of whether they want to use a DMQ or not. As you found with JCSMP this isn't the case in our older APIs for backwards compatibility reasons, however DMQ Eligible is now set to true by default in our new Java, Python and Go Messaging APIs. It is also set to true in our newer connectors like Boomi, MuleSoft and in our Spring Cloud Stream Binder.

    Hope that helps!

Answers

  • Tamimi
    Tamimi Member, Administrator, Employee Posts: 493 admin
    Options

    I will let others chime in here, but you wont have to do anything on the consumer side from DMQ Eligible (if I got your question correctly). You right about setting the flag on the publisher side pre publishing the message

  • murillocg
    murillocg Member Posts: 11
    Options

    In this case, how I should configure the producer with Spring Cloud Streams? I see the DMQ Eligible flag only in the consumer.

  • marc
    marc Member, Administrator, Moderator, Employee Posts: 921 admin
    #5 Answer ✓
    Options

    Hi @murillocg,

    I wanted to respond quickly before I have to run out the door so there is more context here (maybe an interesting read), but our best practice would be to always set DMQ Eligible to true so the Consumer can make the call of whether they want to use a DMQ or not. As you found with JCSMP this isn't the case in our older APIs for backwards compatibility reasons, however DMQ Eligible is now set to true by default in our new Java, Python and Go Messaging APIs. It is also set to true in our newer connectors like Boomi, MuleSoft and in our Spring Cloud Stream Binder.

    Hope that helps!