Exemple #1
0
        public IWorkerLoad <TMessage> GetWorkerLoad <TMessage>()
            where TMessage : class
        {
            IWorkerLoad workerLoad = _workerLoadCache.Get(typeof(TMessage),
                                                          _ => AddWorkerLoad <TMessage>());

            return(workerLoad as IWorkerLoad <TMessage>);
        }
        public UnsubscribeAction Connect(IInboundPipelineConfigurator configurator, IWorker worker)
        {
            IWorkerLoad <TMessage> workerLoad = worker.GetWorkerLoad <TMessage>();

            var consumerSink = new SelectedConsumerMessageSink <TConsumer, TMessage>(_consumerFactory);

            var sink = new WorkerMessageSink <TMessage>(workerLoad, consumerSink);

            return(configurator.Pipeline.ConnectToRouter(sink, () => configurator.SubscribedTo <Distributed <TMessage> >()));
        }
Exemple #3
0
        public UnsubscribeAction Connect(IInboundPipelineConfigurator configurator, IWorker worker)
        {
            IWorkerLoad <TMessage> workerLoad = worker.GetWorkerLoad <TMessage>();

            ISagaPolicy <TSaga, TMessage> policy = GetPolicy();

            ISagaMessageSink <TSaga, TMessage> messageSink = GetSagaMessageSink(_sagaRepository, policy);

            var sink = new WorkerMessageSink <TMessage>(workerLoad, messageSink);

            return(configurator.Pipeline.ConnectToRouter(sink, () => configurator.SubscribedTo <Distributed <TMessage> >()));
        }
        public ISubscriptionReference Connect(IInboundPipelineConfigurator configurator, IWorker worker)
        {
            IWorkerLoad <TMessage> workerLoad = worker.GetWorkerLoad <TMessage>();

            var handlerSink = new InstanceMessageSink <TMessage>(MultipleHandlerSelector.ForHandler(_handler));

            var sink = new WorkerMessageSink <TMessage>(workerLoad, handlerSink);

            UnsubscribeAction unsubscribeAction = configurator.Pipeline.ConnectToRouter(sink,
                                                                                        () => configurator.SubscribedTo <Distributed <TMessage> >());

            return(_referenceFactory(unsubscribeAction));
        }
 public WorkerMessageSink(IWorkerLoad<TMessage> workerLoad, IPipelineSink<IConsumeContext<TMessage>> output)
 {
     _workerLoad = workerLoad;
     _output = output;
 }