コード例 #1
0
        public void Can_handle_requests_concurrently_in_4_threads(int noOfThreads, int msgs)
        {
            var timesCalled = 0;

            using var mqHost = new ServiceBusMqServer(ConnectionString);
            var queueNames = QueueNames <Wait> .AllQueueNames.Select(SafeQueueName).ToList();

#if NETCOREAPP2_1
            queueNames.ForEach(q => mqHost.ManagementClient.DeleteQueueAsync(q).GetAwaiter().GetResult());
#else
            queueNames.ForEach(q => mqHost.NamespaceManager.DeleteQueue(q));
#endif

            mqHost.RegisterHandler <Wait>(m => {
                Interlocked.Increment(ref timesCalled);
                Thread.Sleep(m.GetBody().ForMs);
                return(null);
            }, noOfThreads);

            mqHost.Start();

            var dto = new Wait {
                ForMs = 100
            };
            using var mqClient = mqHost.CreateMessageQueueClient();
            msgs.Times(i => mqClient.Publish(dto));

            ExecUtils.RetryUntilTrue(() => timesCalled == msgs, TimeSpan.FromSeconds(5));
        }
コード例 #2
0
 public MqTest()
 {
     MqServer = new ServiceBusMqServer("<ServiceBus ConnectionString>")
     {
         DisablePublishingToOutq = true,
     };
     MqFactory = MqServer.MessageFactory;
 }
コード例 #3
0
        // Configure your AppHost with the necessary configuration and dependencies your App needs
        public override void Configure(Container container)
        {
            SetConfig(new HostConfig
            {
                DefaultRedirectPath = "/metadata",
                DebugMode           = AppSettings.Get(nameof(HostConfig.DebugMode), false)
            });

            var mqServer = new ServiceBusMqServer("sb-connection");


            //works here but not in MyApp
            using (var mqClient = mqServer.CreateMessageQueueClient())
            {
                mqClient.Publish(new SendEmailMessage());
            }
        }
コード例 #4
0
        /// <summary>
        /// Application specific configuration
        /// This method should initialize any IoC resources utilized by your web service classes.
        /// </summary>
        public override void Configure(Container container)
        {
            //Config examples
            //this.Plugins.Add(new PostmanFeature());
            //this.Plugins.Add(new CorsFeature());

            var mqServer = new ServiceBusMqServer("sb-connection");

            mqServer.RegisterHandler <SendEmailMessage>(ExecuteMessage);
            mqServer.Start();

            //works here but not in MyApp
            using (var mqClient = mqServer.CreateMessageQueueClient())
            {
                mqClient.Publish(new SendEmailMessage());
            }
        }
コード例 #5
0
        public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
        .ConfigureServices((hostContext, services) =>
        {
            AppHost = new GenericAppHost(typeof(MyService).Assembly)
            {
                ConfigureAppHost = host =>
                {
                    var mqServer = new ServiceBusMqServer(hostContext.Configuration.GetConnectionString("ServiceBus"))
                    {
                        DisablePublishingToOutq = true,
                    };
                    mqServer.RegisterHandler <Hello>(host.ExecuteMessage);
                    host.Register <IMessageService>(mqServer);
                }
            }.Init();

            services.AddSingleton(AppHost.Resolve <IMessageService>());
            services.AddHostedService <MqWorker>();
        });