We're processing Amazon messages in a fragile way. We send a message from DonationInterface to the pending queue with donor information and utm data. Then when the IPN message comes in, we send a sparse message to the donations queue with the amount, time, and ID of the message we assume is in the pending queue.
When the donations queue consumer sees a message with a completion_message_id, it tries to find that message in the pending queue. If it doesn't exist, it takes 5 seconds to time out, which can back the queue up like crazy if there are a lot of missing messages in the pending queue.
We should store the pending info someplace where it's a lot easier to look things up by ID and not as expensive when it fails.