Ejemplo n.º 1
0
        public Task <ISendTransport> CreateSendTransport(RabbitMqEndpointAddress address, IModelContextSupervisor modelContextSupervisor)
        {
            TransportLogMessages.CreateSendTransport(address);

            var settings = _hostTopology.SendTopology.GetSendSettings(address);

            var brokerTopology = settings.GetBrokerTopology();

            IPipe <ModelContext> pipe = new ConfigureTopologyFilter <SendSettings>(settings, brokerTopology).ToPipe();

            var supervisor = new ModelContextSupervisor(modelContextSupervisor);

            var transport = CreateSendTransport(supervisor, pipe, settings.ExchangeName);

            return(Task.FromResult(transport));
        }
Ejemplo n.º 2
0
        public RabbitMqReceiveEndpointContext CreateReceiveEndpointContext()
        {
            var brokerTopology = BuildTopology(_configuration.Settings);

            IDeadLetterTransport deadLetterTransport = CreateDeadLetterTransport();
            IErrorTransport      errorTransport      = CreateErrorTransport();

            IModelContextSupervisor supervisor = new ModelContextSupervisor(_host.ConnectionContextSupervisor);

            var receiveEndpointContext = new RabbitMqQueueReceiveEndpointContext(_host, supervisor, _configuration, brokerTopology);

            receiveEndpointContext.GetOrAddPayload(() => deadLetterTransport);
            receiveEndpointContext.GetOrAddPayload(() => errorTransport);

            return(receiveEndpointContext);
        }
Ejemplo n.º 3
0
        public Task <ISendTransport> CreatePublishTransport <T>(IModelContextSupervisor modelContextSupervisor)
            where T : class
        {
            IRabbitMqMessagePublishTopology <T> publishTopology = _hostTopology.Publish <T>();

            var sendSettings = publishTopology.GetSendSettings(_hostConfiguration.HostAddress);

            var brokerTopology = publishTopology.GetBrokerTopology();

            var supervisor = new ModelContextSupervisor(modelContextSupervisor);

            IPipe <ModelContext> pipe = new ConfigureTopologyFilter <SendSettings>(sendSettings, brokerTopology).ToPipe();

            var transport = CreateSendTransport(supervisor, pipe, publishTopology.Exchange.ExchangeName);

            return(Task.FromResult(transport));
        }