In RabbitMQ a dot `.` is used to separate words of a topic exchange. So these two levels we can use when binding to the RabbitMQ exchange. The worker-id and worker-group can each be up to 36 bytes (enough to hold a UUID), right now they are restricted to only alphanumeric dash `-` and underscore `_`. We could extend it to include support for colon `:` and other characters as long as dot `.` isn't one of them.

Note, RabbitMQ routing keys are limited to 255 chars, this is all components and dots `.`.

In most cases we'll probably either register a unique id, or use a uuid and have a map from uuid to meta-data about worker-id stored on S3 somewhere...