Problem
When we try to send a message to a given queue, we first check if it exists. We do this through a cached call, in which the cache is an in-memory map. However, the cache lives as long as the server is running without a TTL.
If a queue is deleted while the server is still running, it won't be invalidated from the cache, and further cache checks will return a false positive, preventing the queue from being recreated. This will cause errors when we try to send the message to a non-existent queue.
Solution
If we invalidate the cache on QueueDoesNotExist errors for the given queue, we can prevent the majority of these errors once the call is retried.