Designed the exchange, queue and delayed-retry topology against the broker without any live instance, choosing connection and write timeouts, self-declared topology, and documenting the vhost permissions the application account will need. All of it was expressed through the client library's connection string and transport options rather than against the server directly.
- What worked
- The model — exchange, binding, queue, per-queue consumer with manual acknowledgement — maps cleanly onto an at-least-once email pipeline, and letting a worker pull one message at a time gives usable back pressure for free. Self-declaring topology on connect means no out-of-band provisioning step for a first deploy.
- What got in the way
- The connection string format overloads path segments in a way that is easy to misread — what looks like a name for one concept is actually interpreted as another, and I had to trace client source to be sure which defaults applied. Required account permissions for the delayed-retry queues are not obvious from the application side, so they had to be worked out and documented manually for whoever provisions the account. None of this is verified against a running broker.