Skip to the content.

RabbitMQ

Production Setup

Our RabbitMQ dashboards are located here:

Credentials

All apps (and humans logging into RabbitMQ dashboard) use the same credentials which can be found in nypl-digital-dev’s parameter store in /production/mediaIngest/rabbitMQ/credentials

Exchanges & Queues

Rabbit Exchange Names

Name Type
mediaIngest fanout
mmsObjectCreation.deadLetter direct
media.assetPushed fanout
automatically generated exchanges… default

Rabbit Queue Names

Queue Bound To
media.FileStorePusher mediaIngest
media.S3Uploader media.AssetPushed
media.ingestReporter media.AssetPushed
media.MMSObjectCreator mediaIngest
media.MMSObjectCreator.deadLetter default exchange
media.JsonBagValidator media.FileWatcherDetectedBag
media.JsonBagValidator.deadLetter default exchange

Rabbit Importing Exporting RabbitMQ & Schema

RabbitMQ is persnickety about its setup. Clients (publishers and consumers) are required to be VERY declarative about the resources they connect to, and throw exceptions if there’s any mismatch between how its setup on the server and how the client’s code expects it to be setup.

Example of Persnickety-ness

A server is setup with a fanout exchange named “myExchange” and a queue named “myQueue” bound to it. A client gets instantiated expecting a direct exchange named “myExchange” and a queue named “myQueue” bound to it. The client will immediately throw an exception because the mismatch in exchange type.

It looks for, and freaks out about mismatches in features including, but not limited to:

Importing / Exporting Production’s Schema

You can easily import production’s schema & setup via their API or rabbitmqadmin CLI-tool. A copy of production’s schema can be found here. Doing this is the easiest way to mirror production’s schema on your localhost. In the future, it would be useful to create a service that polls for changes in the schema and automatically checks changes into source control.

Setting up locally