public static UnsubscribeAction Connect <TOutput>(this IOutboundMessagePipeline pipeline,
                                                          IPipelineSink <IBusPublishContext <TOutput> > sink)
            where TOutput : class
        {
            var routerConfigurator = new OutboundMessageRouterConfigurator(pipeline);

            return(routerConfigurator.FindOrCreate <TOutput>().Connect(sink));
        }
        public static UnsubscribeAction ConnectToRouter <TOutput>(this IPipelineSink <ISendContext> pipeline,
                                                                  IPipelineSink <IBusPublishContext <TOutput> > sink)
            where TOutput : class
        {
            var routerConfigurator = new OutboundMessageRouterConfigurator(pipeline);

            MessageRouter <IBusPublishContext <TOutput> > router = routerConfigurator.FindOrCreate <TOutput>();

            UnsubscribeAction result = router.Connect(sink);

            return(() => result() && (router.SinkCount == 0));
        }