Since all exchanges have the same routing pattern how about, letting the constructor take `routing` and `exchanges`, where routing is an object with keys:
```
var routing_argument_example = {
taskId:   "<uuid>",
runId:    null,
workerGroup: null,
workerId: null,
provisionerId: null,
workerType: null,
taskRouting: null
};
```
And default arguments, if those not defined in the `routing` argument is `*` with the exception of `taskRouting` which defaults to `#`.

That way, when listening for a specific task, you just provide the `taskId`. And if you want to bind before you submit the task, you can just give the task you submit a uuid in `task.routing`... and give that in `taskRouting`.