Пример #1
0
        private IBusControl GetBusInstance(IOptions <BusConfiguration> configuration)
        {
            var config = configuration.Value;

            IBusControl bus = null;

            switch (config.Transport)
            {
            case BusTransport.RABBITMQ:
                bus = Bus.Factory.CreateUsingRabbitMq(cfg =>
                {
                    cfg.Host(config.HostName, config.VirtualHost, c =>     // new Uri(config.Url), c =>
                    {
                        c.Username(config.Credentials.Username);
                        c.Password(config.Credentials.Password);
                    });

                    cfg.ReceiveEndpoint(config.Queue, e =>
                    {
                        e.Handler <Message>(ctx => _Subscriber.HandleMessage(ctx.Message));

                        EndpointConvention.Map <Message>(e.InputAddress);
                    });
                });
                break;
            //case BusTransport.AZURE:
            //    bus = Bus.Factory.CreateUsingAzureServiceBus(cfg =>
            //    {
            //        var host = cfg.Host(config.Url, c =>
            //        {
            //            c.SharedAccessSignature(s =>
            //            {
            //                s.KeyName = config.Credentials.KeyName;
            //                s.SharedAccessKey = config.Credentials.SharedAccessKey;
            //                s.TokenTimeToLive = TimeSpan.FromDays(config.Credentials.TokenTimeToLive);
            //                s.TokenScope = TokenScope.Namespace;
            //            });
            //        });

            //        cfg.ReceiveEndpoint(host, config.Queue, e =>
            //        {
            //            e.Handler<Message>(ctx => _Subscriber.HandleMessage(ctx.Message));

            //            EndpointConvention.Map<Message>(e.InputAddress);
            //        });
            //    });
            //    break;
            default:
                bus = Bus.Factory.CreateUsingInMemory(cfg =>
                {
                    cfg.ReceiveEndpoint("memory.queue", ep =>
                    {
                        ep.Handler <Message>(ctx => _Subscriber.HandleMessage(ctx.Message));

                        EndpointConvention.Map <Message>(ep.InputAddress);
                    });
                });
                break;
            }

            return(bus);
        }