public TransportConfigurationResult Configure(SettingsHolder settings, TransportTransactionMode transactionMode) { var result = new TransportConfigurationResult(); var transport = new RabbitMQTransport(); var connectionString = Environment.GetEnvironmentVariable("RabbitMQTransport_ConnectionString"); if (string.IsNullOrEmpty(connectionString)) { throw new Exception("The 'RabbitMQTransport_ConnectionString' environment variable is not set."); } connectionStringBuilder = new DbConnectionStringBuilder { ConnectionString = connectionString }; queueBindings = settings.Get <QueueBindings>(); new TransportExtensions <RabbitMQTransport>(settings).UseConventionalRoutingTopology(); result.TransportInfrastructure = transport.Initialize(settings, connectionStringBuilder.ConnectionString); isTransportInitialized = true; result.PurgeInputQueueOnStartup = true; transportTransactionMode = result.TransportInfrastructure.TransactionMode; requestedTransactionMode = transactionMode; //work around for TransportTests not calling Start result.TransportInfrastructure.Start(); return(result); }
public async Task SetUp() { receivedMessages = new BlockingCollection <IncomingMessage>(); var connectionString = Environment.GetEnvironmentVariable("RabbitMQTransport_ConnectionString") ?? "host=localhost"; var useTls = connectionString.StartsWith("https", StringComparison.InvariantCultureIgnoreCase) || connectionString.StartsWith("amqps", StringComparison.InvariantCultureIgnoreCase); var transport = new RabbitMQTransport(RoutingTopology.Conventional(QueueType.Classic), connectionString); var connectionConfig = transport.ConnectionConfiguration; connectionFactory = new ConnectionFactory(ReceiverQueue, connectionConfig, null, true, false, transport.HeartbeatInterval, transport.NetworkRecoveryInterval, null); infra = await transport.Initialize(new HostSettings(ReceiverQueue, ReceiverQueue, new StartupDiagnosticEntries(), (_, __, ___) => { }, true), new[] { new ReceiveSettings(ReceiverQueue, new QueueAddress(ReceiverQueue), true, true, "error") }, AdditionalReceiverQueues.Concat(new[] { ErrorQueue }).ToArray()); messageDispatcher = infra.Dispatcher; messagePump = infra.Receivers[ReceiverQueue]; subscriptionManager = messagePump.Subscriptions; await messagePump.Initialize(new PushRuntimeSettings(MaximumConcurrency), (messageContext, cancellationToken) => { receivedMessages.Add(new IncomingMessage(messageContext.NativeMessageId, messageContext.Headers, messageContext.Body), cancellationToken); return(Task.CompletedTask); }, (_, __) => Task.FromResult(ErrorHandleResult.Handled) ); await messagePump.StartReceive(); }
private RabbitMQTransport GetTransport(IReadOnlyDictionary <string, object> primaryQueueArguments) { // Each Transport uses a unique Guid as the queue base to ensure the tests are isolated var transportGuid = Guid.NewGuid(); usedGuids.Add(transportGuid); var config = new ConfigurationBuilder(); config.ConfigureAndCreateContext(x => { x.UsingAssemblyLocator <TestAssemblyLocator>(); x.UseRabbitMQ(r => { r.UseConnectionString(connectionString); r.UseExchange(exchange); r.WithPrimaryQueueArguments(primaryQueueArguments); r.OnSendingMessage(OnSendingMessage); }); }); var transport = new RabbitMQTransport(transportGuid.ToString(), config.ConfigurationContext); transport.InitializeForConsuming(); transport.InitializeForPublishing(); return(transport); }
public TransportDefinition CreateTransportDefinition() { var connectionString = Environment.GetEnvironmentVariable("RabbitMQTransport_ConnectionString") ?? "host=localhost"; var transport = new RabbitMQTransport(RoutingTopology.Conventional(QueueType.Classic), connectionString); return(transport); }
void UseConventionalRoutingTopology(EndpointConfiguration endpointConfiguration) { #region rabbitmq-config-useconventionalroutingtopology var transport = new RabbitMQTransport(Topology.Conventional, "host=localhost"); endpointConfiguration.UseTransport(transport); #endregion }
void UseDirectRoutingTopology(EndpointConfiguration endpointConfiguration) { #region rabbitmq-config-usedirectroutingtopology var transport = new RabbitMQTransport(Topology.Direct, "host=localhost"); endpointConfiguration.UseTransport(transport); #endregion }
void UseRoutingTopology5_0(EndpointConfiguration endpointConfiguration) { #region rabbitmq-config-useroutingtopologyDelegate var topology = new MyRoutingTopology(createDurableExchangesAndQueues: true); var transport = new RabbitMQTransport(topology, "host=localhost"); endpointConfiguration.UseTransport(transport); #endregion }
void CertificatePath(EndpointConfiguration endpointConfiguration) { #region 6to7certificatepath7 var transport = new RabbitMQTransport(Topology.Conventional, "host=localhost") { ClientCertificate = new X509Certificate2("path", "password") }; endpointConfiguration.UseTransport(transport); #endregion }
public TransportDefinition CreateTransportDefinition() { var connectionString = Environment.GetEnvironmentVariable("RabbitMQTransport_ConnectionString"); if (string.IsNullOrEmpty(connectionString)) { throw new Exception("The 'RabbitMQTransport_ConnectionString' environment variable is not set."); } var transport = new RabbitMQTransport(Topology.Conventional, connectionString); return(transport); }
void SetClientCertificate(EndpointConfiguration endpointConfiguration) { #region rabbitmq-client-certificate var transport = new RabbitMQTransport(Topology.Conventional, "host=localhost") { ClientCertificate = new X509Certificate2() }; endpointConfiguration.UseTransport(transport); #endregion }
void PrefetchCount(EndpointConfiguration endpointConfiguration) { #region rabbitmq-config-prefetch-count var transport = new RabbitMQTransport(Topology.Conventional, "host=localhost") { PrefetchCountCalculation = _ => 100 }; endpointConfiguration.UseTransport(transport); #endregion }
void DisableDurableExchangesAndQueues(EndpointConfiguration endpointConfiguration) { #region rabbitmq-disable-durable-exchanges var topology = new ConventionalRoutingTopology( useDurableExchanges: false); var transport = new RabbitMQTransport(topology, "host=localhost"); endpointConfiguration.UseTransport(transport); #endregion }
void UseCustomCircuitBreakerSettings(EndpointConfiguration endpointConfiguration) { #region rabbitmq-custom-breaker-settings-time-to-wait-before-triggering-code var transport = new RabbitMQTransport(Topology.Conventional, "host=localhost") { TimeToWaitBeforeTriggeringCircuitBreaker = TimeSpan.FromMinutes(2) }; endpointConfiguration.UseTransport(transport); #endregion }
void ChangeNetworkRecoveryInterval(EndpointConfiguration endpointConfiguration) { #region change-network-recovery-interval var transport = new RabbitMQTransport(Topology.Conventional, "host=localhost") { NetworkRecoveryInterval = TimeSpan.FromSeconds(30) }; endpointConfiguration.UseTransport(transport); #endregion }
void ChangeRequestedHeartbeat(EndpointConfiguration endpointConfiguration) { #region rabbitmq-connectionstring-debug var transport = new RabbitMQTransport(Topology.Conventional, "host=broker1;RequestedHeartbeat=600") { ClientCertificate = new X509Certificate2() }; endpointConfiguration.UseTransport(transport); #endregion }
void ChangeRequestedHeartbeatForDebugging(EndpointConfiguration endpointConfiguration) { #region rabbitmq-debug-api var transport = new RabbitMQTransport(Topology.Conventional, "host=localhost") { HeartbeatInterval = TimeSpan.FromMinutes(10) }; endpointConfiguration.UseTransport(transport); #endregion }
void DisableRemoteCertificateValidation(EndpointConfiguration endpointConfiguration) { #region rabbitmq-disable-remote-certificate-validation var transport = new RabbitMQTransport(Topology.Conventional, "host=localhost") { ValidateRemoteCertificate = false }; endpointConfiguration.UseTransport(transport); #endregion }
void UseExternalAuthMechanism(EndpointConfiguration endpointConfiguration) { #region rabbitmq-external-auth-mechanism var transport = new RabbitMQTransport(Topology.Conventional, "host=localhost") { UseExternalAuthMechanism = true }; endpointConfiguration.UseTransport(transport); #endregion }
void PrefetchMultiplier(EndpointConfiguration endpointConfiguration) { #region rabbitmq-config-prefetch-multiplier var transport = new RabbitMQTransport(Topology.Conventional, "host=localhost") { PrefetchCountCalculation = concurrency => concurrency * 4 }; endpointConfiguration.UseTransport(transport); #endregion }
void ChangeHeartbeatInterval(EndpointConfiguration endpointConfiguration) { #region change-heartbeat-interval var transport = new RabbitMQTransport(Topology.Conventional, "host=localhost") { HeartbeatInterval = TimeSpan.FromSeconds(30) }; endpointConfiguration.UseTransport(transport); #endregion }
void UseDirectRoutingTopologyWithCustomConventions(EndpointConfiguration endpointConfiguration) { #region rabbitmq-config-usedirectroutingtopologywithcustomconventions var topology = new DirectRoutingTopology( useDurableExchanges: true, exchangeNameConvention: () => "MyTopic", routingKeyConvention: MyRoutingKeyConvention); var transport = new RabbitMQTransport(topology, "host=localhost"); endpointConfiguration.UseTransport(transport); #endregion }
void CustomIdStrategy(EndpointConfiguration endpointConfiguration) { #region rabbitmq-config-custom-id-strategy var transport = new RabbitMQTransport(Topology.Conventional, "host=localhost") { MessageIdStrategy = deliveryArgs => { var headers = deliveryArgs.BasicProperties.Headers; return(headers["MyCustomId"].ToString()); } }; endpointConfiguration.UseTransport(transport); #endregion }
static async Task Main() { Console.Title = "Samples.RabbitMQ.SimpleReceiver"; var endpointConfiguration = new EndpointConfiguration("Samples.RabbitMQ.SimpleReceiver"); var transport = new RabbitMQTransport(Topology.Conventional, "host=localhost"); endpointConfiguration.UseTransport(transport); endpointConfiguration.EnableInstallers(); var endpointInstance = await Endpoint.Start(endpointConfiguration) .ConfigureAwait(false); Console.WriteLine("Press any key to exit"); Console.ReadKey(); await endpointInstance.Stop() .ConfigureAwait(false); }
void PrefetchCount(EndpointConfiguration endpointConfiguration) { #region 6to7prefetchcount7 var transportWithFixedPrefetchCount = new RabbitMQTransport(Topology.Conventional, "host=localhost") { PrefetchCountCalculation = _ => 100 }; endpointConfiguration.UseTransport(transportWithFixedPrefetchCount); //or var transportWithConcurrencyBasedPrefetchCount = new RabbitMQTransport(Topology.Conventional, "host=localhost") { PrefetchCountCalculation = concurrency => concurrency * 7 }; endpointConfiguration.UseTransport(transportWithConcurrencyBasedPrefetchCount); #endregion }
public async Task SetUp() { receivedMessages = new BlockingCollection <IncomingMessage>(); var connectionString = Environment.GetEnvironmentVariable("RabbitMQTransport_ConnectionString"); if (string.IsNullOrEmpty(connectionString)) { throw new Exception("The 'RabbitMQTransport_ConnectionString' environment variable is not set."); } var useTls = connectionString.StartsWith("https", StringComparison.InvariantCultureIgnoreCase) || connectionString.StartsWith("amqps", StringComparison.InvariantCultureIgnoreCase); var transport = new RabbitMQTransport(Topology.Conventional, connectionString); connectionFactory = new ConnectionFactory(ReceiverQueue, transport.Host, transport.Port ?? 5672, transport.VHost, transport.UserName, transport.Password, useTls, null, false, false, transport.HeartbeatInterval, transport.NetworkRecoveryInterval, null); infra = await transport.Initialize(new HostSettings(ReceiverQueue, ReceiverQueue, new StartupDiagnosticEntries(), (_, __, ___) => { }, true), new[] { new ReceiveSettings(ReceiverQueue, ReceiverQueue, true, true, "error") }, AdditionalReceiverQueues.Concat(new[] { ErrorQueue }).ToArray()); messageDispatcher = infra.Dispatcher; messagePump = infra.Receivers[ReceiverQueue]; subscriptionManager = messagePump.Subscriptions; await messagePump.Initialize(new PushRuntimeSettings(MaximumConcurrency), (messageContext, cancellationToken) => { receivedMessages.Add(new IncomingMessage(messageContext.NativeMessageId, messageContext.Headers, messageContext.Body), cancellationToken); return(Task.CompletedTask); }, (_, __) => Task.FromResult(ErrorHandleResult.Handled) ); await messagePump.StartReceive(); }
static async Task Main() { Console.Title = "Samples.RabbitMQ.SimpleSender"; #region ConfigureRabbit var endpointConfiguration = new EndpointConfiguration("Samples.RabbitMQ.SimpleSender"); var transport = new RabbitMQTransport(Topology.Conventional, "host=localhost"); var routing = endpointConfiguration.UseTransport(transport); #endregion routing.RouteToEndpoint(typeof(MyCommand), "Samples.RabbitMQ.SimpleReceiver"); endpointConfiguration.EnableInstallers(); var endpointInstance = await Endpoint.Start(endpointConfiguration) .ConfigureAwait(false); await SendMessages(endpointInstance); await endpointInstance.Stop() .ConfigureAwait(false); }
public TransportConfigurationResult Configure(SettingsHolder settings, TransportTransactionMode transactionMode) { var result = new TransportConfigurationResult(); var transport = new RabbitMQTransport(); connectionString = Environment.GetEnvironmentVariable("RabbitMQTransport.ConnectionString"); if (connectionString == null) { connectionString = "host=localhost"; } queueBindings = settings.Get <QueueBindings>(); result.TransportInfrastructure = transport.Initialize(settings, connectionString); result.PurgeInputQueueOnStartup = true; transportTransactionMode = result.TransportInfrastructure.TransactionMode; requestedTransactionMode = transactionMode; return(result); }
public MyServiceConfiguration() : base("MyService") { var scanner = this.AssemblyScanner(); scanner.IncludeOnly("MyService.dll", "MyMessages.dll"); this.UseSerialization <NewtonsoftSerializer>(); this.UsePersistence <LearningPersistence>(); this.EnableInstallers(); var transport = new RabbitMQTransport(Topology.Conventional, "host=localhost;username=guest;password=guest"); var routing = this.UseTransport(transport); routing.RouteToEndpoint(typeof(AMessage), "MyOtherService"); this.SendFailedMessagesTo("error"); Conventions() .DefiningMessagesAs(t => t.Namespace != null && t.Namespace.EndsWith(".Messages")) .DefiningEventsAs(t => t.Namespace != null && t.Namespace.EndsWith(".Messages.Events")) .DefiningCommandsAs(t => t.Namespace != null && t.Namespace.EndsWith(".Messages.Commands")); }
public static EndpointConfiguration Build(string endpointName, string rabbitMqConnectionString) { var config = new EndpointConfiguration(endpointName); var scanner = config.AssemblyScanner(); scanner.IncludeOnly("MyOtherService.dll", "MyMessages.dll"); config.UseSerialization <NewtonsoftSerializer>(); config.UsePersistence <LearningPersistence>(); config.EnableInstallers(); var transport = new RabbitMQTransport(Topology.Conventional, rabbitMqConnectionString); config.UseTransport(transport); config.SendFailedMessagesTo("error"); config.Conventions() .DefiningMessagesAs(t => t.Namespace != null && t.Namespace.EndsWith(".Messages")) .DefiningEventsAs(t => t.Namespace != null && t.Namespace.EndsWith(".Messages.Events")) .DefiningCommandsAs(t => t.Namespace != null && t.Namespace.EndsWith(".Messages.Commands")); return(config); }