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)); }
public MqTest() { MqServer = new ServiceBusMqServer("<ServiceBus ConnectionString>") { DisablePublishingToOutq = true, }; MqFactory = MqServer.MessageFactory; }
// 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()); } }
/// <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()); } }
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>(); });