The first imperative is how to fulfill our PCI obligations. To do that, we
prevent any queue read access from the payments cluster.
The orphan slayer relies on read access, so we host the limbo queue on the
payments Memcache instance rather than ActiveMQ.
Migration plan for antimessages
Antimessages were a workaround for ActiveMQ, because deleting a message by
selector is slow. With memcache, we can easily delete by key. We'll get
rid of antimessages in the following order:
- All code that writes to the limbo queue will start writing to both queues.
- Wait until the Memcache queue has filled up and any messages only written to ActiveMQ have expired (TBD: expected lifespan).
- Check Memcache contents for sanity.
- Deploy new code which reads from Memcache.
- Confirm sanity, then stop writing to ActiveMQ.
Whatever we do for the pending queue needs to be plugged in at both ends.