In this case you’ll be setting both to 1. Leaving max-delivered-unacked-msgs-per-flow will not give you want you want, because the broker will deliver one message to the API, wait for the API to respond it got the message (which it will), then send another. You need to tell the broker to wait for an ack from the application (i.e. you called ack()) as well. That’s what setting max-delivered-unacked-msgs-per-flow is for
Performance of the broker to consumer connection will indeed take a huge hit - but your need to process tasks one by one is greater than how fast you can get tasks to consumers. So, set both to 1 and don’t worry about performance.