Start here. This is the direct spoken answer to practice first.
Why this question matters
Queue-backed processing fits work that is slow, bursty, failure-prone, or allowed to complete after the API response. The design must preserve a durable acceptance boundary and give callers an honest way to observe the eventual outcome.
I would move work to a queue when it is slow, bursty, failure-prone, or does not need to finish before the API returns. The request can validate the command, create a durable job or state record, enqueue a message, and return a status or accepted response. A worker then processes the message with controlled concurrency. That keeps the API responsive while the system still has a durable path to finish the work.