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> >())); }
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; }