Well, it's more an aspect of my application framework. I'm using a plugin system to start up the available components that will be handling messages of various types. Currently, this is such that when those components start, they subscribe to an instance of the Bus, and register their interests in it. When the components shut down, then unregister their interest.
Components come and go while the system is running. For instance, there are some components which only run on a single node in a cluster. And they use MT to negotiate which node should be running. One node might go down, and thus another node would start itself in response. Some components only run on two nodes in the cluster. There might be hundreds of nodes in the cluster. Nodes can be added in all the time, and their components negotiate whether they should be running, and if so, they subscribe to the Bus for some message type.
I can't just use MT's Consumer and DI stuff. I have my own component framework which pays attention to a lot more than just MT messages.
Right now this works fine with MT 2. Since bus.Subscribe<T> works, and returns a IDisposable, my components can just subscribe when they need to. And Dispose it when they're done.
And I really, really, do not want to re-architect this thing. I have hundreds of such components. But I do want MT3 to be working in it. ;)