I have an outgoing message channel, and an incoming message channel - most incoming message are associated with an outgoing message, but not all. Sometimes I'll have to also retry, and I'll also have to apply some throttling. Are there primitives / libraries out there, or should I go implement some queues on my own?