public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureServices((hostContext, services) => { var azureServiceBusSection = hostContext.Configuration.GetSection("Bus:MessageContract:AzureServiceBus"); var connectionString = azureServiceBusSection.GetValue <string>("ConnectionString"); var topic = azureServiceBusSection.GetValue <string>("Topic"); var subscription = azureServiceBusSection.GetValue <string>("Subscription"); var maxConcurrentCalls = 1; var autoCompleteMessage = false; var configurationAzureServiceBus = new ReceiverConfigurationAzureServiceBus <MessageContractASB>(topic, subscription, maxConcurrentCalls, autoCompleteMessage); var credentialsAzureServiceBus = new CredentialsAzureServiceBus(connectionString); services .AddAzureServiceBus(credentialsAzureServiceBus) .AddBusReceiverFor <MessageContractASB>(builder => builder .WithConfiguration(configurationAzureServiceBus) .WithMessageHandler <ConsumerMessage>()); services.AddHostedService <WorkerAzureServiceBus>(); var rabbitMQBusSection = hostContext.Configuration.GetSection("Bus:MessageContract:RabbitMQ"); var hostName = rabbitMQBusSection.GetValue <string>("HostName"); var port = rabbitMQBusSection.GetValue <int>("Port"); var userName = rabbitMQBusSection.GetValue <string>("UserName"); var password = rabbitMQBusSection.GetValue <string>("Password"); var queue = rabbitMQBusSection.GetValue <string>("Queue"); var exchange = rabbitMQBusSection.GetValue <string>("Exchange"); var credentialsRabbitMQ = new CredentialsRabbitMQ(hostName, port, userName, password); var configurationRabbitMQ = new ReceiverConfigurationRabbitMQ <MessageContractRMQ>(exchange, queue); services .AddRabbitMQ(credentialsRabbitMQ) .AddBusReceiverFor <MessageContractRMQ>(builder => builder .WithConfiguration(configurationRabbitMQ) .WithMessageHandler <ConsumerMessageRMQ>()); services.AddHostedService <WorkerRabbitMQ>(); });
static async Task MainAsync() { var serviceProvider = new ServiceCollection() .AddLogging(c => c.AddConsole().AddDebug()) .BuildServiceProvider(); var loggerFactory = serviceProvider.GetService <ILoggerFactory>(); var loggerPipeline = loggerFactory.CreateLogger <ISenderPipelineFor <MessageForProducer> >(); var loggerSender = loggerFactory.CreateLogger <ISenderFor <MessageForProducer> >(); var hostName = "localhost"; var port = 5672; var userName = "******"; var password = "******"; var credentials = new CredentialsRabbitMQ(hostName, port, userName, password); var exchange = "exchange-message"; var sender = new SenderPipelineBuilderFor <MessageForProducer>() .WithRabbitMq(credentials, exchange) .WithLogger(loggerPipeline) .WithLogger(loggerSender).Build(); do { Console.WriteLine("Enter message for rabbitMQ (or quit to exit)"); Console.WriteLine("Enter message (or quit to exit)"); Console.Write("> "); string value = Console.ReadLine(); if ("quit".Equals(value, StringComparison.OrdinalIgnoreCase)) { break; } await sender.SendAsync(new MessageForProducer { Nome = value }); }while (true); }
public static ReceiverBuilderFor <T> WithRabbitMQ <T>(this ReceiverBuilderFor <T> receiver, ReceiverConfigurationRabbitMQ <T> configuration, CredentialsRabbitMQ credentials) { receiver.WithReceiver((pipeline, logger) => new ReceiverRabbitMQFor <T>(pipeline, new ResourcesRabbitMQ(), configuration, credentials, logger)); return(receiver); }
public static IServiceCollection AddRabbitMQ(this IServiceCollection services, CredentialsRabbitMQ credentials) { services.AddSingleton(credentials); return(services); }
public static SenderPipelineBuilderFor <T> WithRabbitMq <T>(this SenderPipelineBuilderFor <T> builder, CredentialsRabbitMQ credentials, string exchange) { builder.WithSender((logger) => new SenderRabbitMQFor <T>(credentials, exchange, logger)); return(builder); }