public static UnsubscribeAction Subscribe <TMessage, TKey>(this IMessagePipeline pipeline, TKey correlationId, IEndpoint endpoint)
            where TMessage : class, CorrelatedBy <TKey>
        {
            var correlatedConfigurator = CorrelatedMessageRouterConfigurator.For(pipeline);

            var router = correlatedConfigurator.FindOrCreate <TMessage, TKey>();

            UnsubscribeAction result = router.Connect(correlationId, new EndpointMessageSink <TMessage>(endpoint));

            return(result);
        }
예제 #2
0
        protected virtual UnsubscribeAction Connect <TMessage, TKey>(ISubscriberContext context, Consumes <TMessage> .For <TKey> consumer)
            where TMessage : class, CorrelatedBy <TKey>
        {
            var correlatedConfigurator = CorrelatedMessageRouterConfigurator.For(context.Pipeline);

            var router = correlatedConfigurator.FindOrCreate <TMessage, TKey>();

            UnsubscribeAction result = router.Connect(consumer.CorrelationId, new InstanceMessageSink <TMessage>(message => consumer.Consume));

            UnsubscribeAction remove = context.SubscribedTo <TMessage, TKey>(consumer.CorrelationId);

            return(() => result() && remove());
        }