コード例 #1
0
        static void Main(string[] args)
        {
            Console.Write("Your Service Namespace: ");
            string serviceNamespace = Console.ReadLine();

            Console.Write("Your Issuer Name: ");
            string issuerName = Console.ReadLine();

            Console.Write("Your Issuer Secret: ");
            string issuerSecret = Console.ReadLine();

            Uri address = ServiceBusEnvironment.CreateServiceUri("sb", serviceNamespace, "SimpleWebTokenAuthenticationService");

            TransportClientEndpointBehavior behavior = new TransportClientEndpointBehavior();

            behavior.TokenProvider = TokenProvider.CreateSimpleWebTokenProvider(
                ComputeSimpleWebTokenString(issuerName, issuerSecret));

            ServiceHost host = new ServiceHost(typeof(EchoService), address);

            host.Description.Endpoints[0].Behaviors.Add(behavior);
            host.Open();

            Console.WriteLine("Service address: " + address);
            Console.WriteLine("Press [Enter] to exit");
            Console.ReadLine();

            host.Close();
        }
コード例 #2
0
        static void Main(string[] args)
        {
            Console.Write("Your Service Namespace: ");
            string serviceNamespace = Console.ReadLine();

            Console.Write("Your Issuer Name: ");
            string issuerName = Console.ReadLine();

            Console.Write("Your Issuer Secret: ");
            string issuerSecret = Console.ReadLine();

            Uri serviceUri = ServiceBusEnvironment.CreateServiceUri("sb", serviceNamespace, "SimpleWebTokenAuthenticationService");

            TransportClientEndpointBehavior behavior = new TransportClientEndpointBehavior();

            behavior.TokenProvider = TokenProvider.CreateSimpleWebTokenProvider(
                ComputeSimpleWebTokenString(issuerName, issuerSecret));

            ChannelFactory <IEchoChannel> channelFactory = new ChannelFactory <IEchoChannel>("RelayEndpoint", new EndpointAddress(serviceUri));

            channelFactory.Endpoint.Behaviors.Add(behavior);

            IEchoChannel channel = channelFactory.CreateChannel();

            channel.Open();

            Console.WriteLine("Enter text to echo (or [Enter] to exit):");
            string input = Console.ReadLine();

            while (input != String.Empty)
            {
                try
                {
                    Console.WriteLine("Server echoed: {0}", channel.Echo(input));
                }
                catch (Exception e)
                {
                    Console.WriteLine("Error: " + e.Message);
                }
                input = Console.ReadLine();
            }

            channel.Close();
            channelFactory.Close();
        }
        public async Task UseAzureServiceBus_GivenStaticOptions_ThenValid()
        {
            var batchFlushInterval = TimeSpan.FromMilliseconds(100);
            var options            = new ServiceBusOptions
            {
                ConnectionName        = "connection-name-test",
                HostAddress           = new Uri("sb://namespace.servicebus.windows.net/scope"),
                TokenProvider         = TokenProvider.CreateSimpleWebTokenProvider("token-test"),
                OperationTimeout      = TimeSpan.FromMilliseconds(101),
                RetryMinBackoff       = TimeSpan.FromMilliseconds(102),
                RetryMaxBackoff       = TimeSpan.FromMilliseconds(103),
                RetryLimit            = 9,
                TransportType         = TransportType.NetMessaging,
                BatchFlushInterval    = batchFlushInterval,
                AmqpTransportSettings = new AmqpTransportSettings {
                    BatchFlushInterval = batchFlushInterval
                },
                NetMessagingTransportSettings = new NetMessagingTransportSettings {
                    BatchFlushInterval = batchFlushInterval
                },
            };

            var mockBusHandle  = new Mock <BusHandle>(MockBehavior.Strict);
            var mockBusControl = new Mock <IBusControl>(MockBehavior.Strict);
            var mockAzureServiceBusBusFactory             = new Mock <IBusFactory <IServiceBusBusFactoryConfigurator> >(MockBehavior.Strict);
            var mockAzureServiceBusBusFactoryConfigurator = new Mock <IServiceBusBusFactoryConfigurator>(MockBehavior.Strict);
            var mockAzureServiceBusHost = new Mock <IServiceBusHost>(MockBehavior.Strict);

            mockBusControl
            .Setup(_ => _.StartAsync(It.IsAny <CancellationToken>()))
            .ReturnsAsync(mockBusHandle.Object)
            .Verifiable();

            mockBusControl
            .Setup(_ => _.StopAsync(It.IsAny <CancellationToken>()))
            .Returns(Task.CompletedTask)
            .Verifiable();

            mockAzureServiceBusBusFactory
            .Setup(_ => _.Create(It.IsAny <Action <IServiceBusBusFactoryConfigurator> >()))
            .Callback((Action <IServiceBusBusFactoryConfigurator> configure) => configure(mockAzureServiceBusBusFactoryConfigurator.Object))
            .Returns(mockBusControl.Object)
            .Verifiable();

            mockAzureServiceBusBusFactoryConfigurator
            .Setup(_ => _.Host(It.IsAny <ServiceBusHostSettings>()))
            .Callback((ServiceBusHostSettings settings) =>
            {
                Assert.Equal(options.HostAddress, settings.ServiceUri);
                Assert.Same(options.TokenProvider, settings.TokenProvider);
                Assert.Equal(options.OperationTimeout, settings.OperationTimeout);
                Assert.Equal(options.RetryMinBackoff, settings.RetryMinBackoff);
                Assert.Equal(options.RetryMaxBackoff, settings.RetryMaxBackoff);
                Assert.Equal(options.RetryLimit, settings.RetryLimit);
                Assert.Equal(options.TransportType, settings.TransportType);
                Assert.Equal(options.BatchFlushInterval, settings.AmqpTransportSettings.BatchFlushInterval);
                Assert.Equal(options.BatchFlushInterval, settings.NetMessagingTransportSettings.BatchFlushInterval);
                Assert.Equal(JsonConvert.SerializeObject(options.AmqpTransportSettings), JsonConvert.SerializeObject(settings.AmqpTransportSettings));
                Assert.Equal(JsonConvert.SerializeObject(options.NetMessagingTransportSettings), JsonConvert.SerializeObject(settings.NetMessagingTransportSettings));
            })
            .Returns(mockAzureServiceBusHost.Object)
            .Verifiable();

            var services = new ServiceCollection();

            services.AddSingleton(mockAzureServiceBusBusFactory.Object);

            services.AddLogging(builder =>
            {
                builder.SetMinimumLevel(LogLevel.Trace);
                builder.AddXUnit(_output);
            });

            services.AddMassTransit(builder =>
            {
                builder.UseAzureServiceBus(options);
            });

            using (var serviceProvider = services.BuildServiceProvider())
            {
                var busManager = serviceProvider.GetRequiredService <IBusManager>();

                await busManager.StartAsync(CancellationToken.None).ConfigureAwait(false);

                var bus = busManager.GetBus(options.ConnectionName);
                Assert.NotNull(bus);

                await busManager.StopAsync(CancellationToken.None).ConfigureAwait(false);
            }

            mockAzureServiceBusHost.Verify();
            mockAzureServiceBusBusFactoryConfigurator.Verify();
            mockAzureServiceBusBusFactory.Verify();
            mockBusControl.Verify();
            mockBusHandle.Verify();
        }
コード例 #4
0
        private static void ConfigureServices(HostBuilderContext context, IServiceCollection services)
        {
            services.AddTransient <IWidgetService, WidgetService>();
            // add other DI services...

            // optionally use configuration for any settings
            var configuration = context.Configuration;

            // the following adds IBusManager which is also an IHostedService that is started/stopped by HostBuilder
            services.AddMassTransit(busBuilder =>
            {
                // configure RabbitMQ
                busBuilder.UseRabbitMq(configuration.GetSection("MassTransit:RabbitMq"), hostBuilder =>
                {
                    // use scopes for all downstream filters and consumers
                    // i.e. per-request lifetime
                    hostBuilder.UseServiceScope();

                    // example adding an optional configurator to the bus
                    // using IRabbitMqBusFactoryConfigurator
                    hostBuilder.AddConfigurator(configureBus =>
                    {
                        configureBus.UseRetry(r => r.Immediate(1));
                    });

                    // example adding a receive endpoint to the bus
                    hostBuilder.AddReceiveEndpoint("example-queue-1", endpointBuilder =>
                    {
                        // example adding an optional configurator to the receive endpoint
                        // using IRabbitMqReceiveEndpointConfigurator
                        endpointBuilder.AddConfigurator(configureEndpoint =>
                        {
                            configureEndpoint.UseRetry(r => r.Immediate(3));
                        });

                        // example adding a consumer to the receive endpoint
                        endpointBuilder.AddConsumer <ExampleConsumer>(configureConsumer =>
                        {
                            // example adding an optional configurator to the consumer
                            // using IConsumerConfigurator<TConsumer>
                            configureConsumer.UseRateLimit(10);
                        });
                    });
                });

                // adding more bus instances...

                // InMemory
                busBuilder.UseInMemory("connection-name-2", hostBuilder =>
                {
                    hostBuilder.UseServiceScope();
                    hostBuilder.AddReceiveEndpoint("example-queue-2", endpointBuilder =>
                    {
                        endpointBuilder.AddConsumer <ExampleConsumer>();
                    });
                });

                // ActiveMQ
                busBuilder.UseActiveMq(configuration.GetSection("MassTransit:ActiveMq"), hostBuilder =>
                {
                    hostBuilder.UseServiceScope();
                    hostBuilder.AddReceiveEndpoint("example-queue-3", endpointBuilder =>
                    {
                        endpointBuilder.AddConsumer <ExampleConsumer>();
                    });
                });

                // AmazonSQS
                busBuilder.UseAmazonSqs(configuration.GetSection("MassTransit:AmazonSqs"), hostBuilder =>
                {
                    hostBuilder.UseServiceScope();
                    hostBuilder.AddReceiveEndpoint("example-queue-4", endpointBuilder =>
                    {
                        endpointBuilder.AddConsumer <ExampleConsumer>();
                    });
                });

                // AzureServiceBus or
                // AzureServiceBusCore
                busBuilder.UseAzureServiceBus(configuration.GetSection("MassTransit:AzureServiceBus"), hostBuilder =>
                {
                    hostBuilder.UseServiceScope();

                    hostBuilder.UseTokenProvider(TokenProvider.CreateSimpleWebTokenProvider("web-token-example"));

                    hostBuilder.AddConfigurator(configureBus =>
                    {
                        configureBus.SelectBasicTier();
                    });

                    hostBuilder.AddReceiveEndpoint("example-queue-5", endpointBuilder =>
                    {
                        endpointBuilder.AddConsumer <ExampleConsumer>();
                    });
                });

                // HTTP
                busBuilder.UseHttp(configuration.GetSection("MassTransit:Http"), hostBuilder =>
                {
                    hostBuilder.UseServiceScope();
                    hostBuilder.UseMethod(HttpMethod.Post);
                    hostBuilder.AddReceiveEndpoint("example-queue-6", endpointBuilder =>
                    {
                        endpointBuilder.AddConsumer <ExampleConsumer>();
                    });
                });
            });
        }