如何使用 MassTransit 连接两个 RabbitMQ 服务器
How Do I connect in two RabbitMQ servers using MassTransit
如何打开两个与 massTransit 连接到 RabbitMQ 服务器的连接?
今天我正在使用一个连接,但我需要在另一个服务器中创建更多消费者:
services.AddMassTransit(x =>
{
//this consumer will get messages from one Exchange, and I need to create
//another consumers from anothers Exchanges.
x.AddConsumer<OptionExecutedConsumer>();
x.UsingRabbitMq((context, cfg) =>
{
cfg.Host(rabbitMQConfig.Connection.Servers[0],
rabbitMQConfig.Connection.Port,
rabbitMQConfig.Connection.VirtualHost,
h =>
{
h.Username(rabbitMQConfig.Connection.Username);
h.Password(rabbitMQConfig.Connection.Password);
h.UseCluster(c =>
{
rabbitMQConfig.Connection.Servers.ToList()
.ForEach(server => c.Node(server));
});
});
cfg.ReceiveEndpoint(rabbitMQConfig.Consumer.OptionExerciseQueue, e =>
{
e.UseRetry(r =>
r.Incremental(rabbitMQConfig.Consumer.RetryLimit,
TimeSpan.FromSeconds(rabbitMQConfig.Consumer.InitialInterval),
TimeSpan.FromSeconds(rabbitMQConfig.Consumer.IntervalIncrement)));
e.Bind(rabbitMQConfig.Consumer.OptionExerciseExchange, x =>
{
e.ConcurrentMessageLimit = 1;
e.DiscardFaultedMessages();
e.ClearMessageDeserializers();
e.UseRawJsonSerializer();
e.ConfigureConsumer<OptionExecutedConsumer>(context);
});
});
});
});
如何使用此 class 创建新连接?有没有最佳实践来做到这一点?
您需要设置两个单独的总线实例。这总是可能的,但不是很 DI 友好。目前,well-documented 的多总线功能可让您轻松做到这一点。
如何打开两个与 massTransit 连接到 RabbitMQ 服务器的连接?
今天我正在使用一个连接,但我需要在另一个服务器中创建更多消费者:
services.AddMassTransit(x =>
{
//this consumer will get messages from one Exchange, and I need to create
//another consumers from anothers Exchanges.
x.AddConsumer<OptionExecutedConsumer>();
x.UsingRabbitMq((context, cfg) =>
{
cfg.Host(rabbitMQConfig.Connection.Servers[0],
rabbitMQConfig.Connection.Port,
rabbitMQConfig.Connection.VirtualHost,
h =>
{
h.Username(rabbitMQConfig.Connection.Username);
h.Password(rabbitMQConfig.Connection.Password);
h.UseCluster(c =>
{
rabbitMQConfig.Connection.Servers.ToList()
.ForEach(server => c.Node(server));
});
});
cfg.ReceiveEndpoint(rabbitMQConfig.Consumer.OptionExerciseQueue, e =>
{
e.UseRetry(r =>
r.Incremental(rabbitMQConfig.Consumer.RetryLimit,
TimeSpan.FromSeconds(rabbitMQConfig.Consumer.InitialInterval),
TimeSpan.FromSeconds(rabbitMQConfig.Consumer.IntervalIncrement)));
e.Bind(rabbitMQConfig.Consumer.OptionExerciseExchange, x =>
{
e.ConcurrentMessageLimit = 1;
e.DiscardFaultedMessages();
e.ClearMessageDeserializers();
e.UseRawJsonSerializer();
e.ConfigureConsumer<OptionExecutedConsumer>(context);
});
});
});
});
如何使用此 class 创建新连接?有没有最佳实践来做到这一点?
您需要设置两个单独的总线实例。这总是可能的,但不是很 DI 友好。目前,well-documented 的多总线功能可让您轻松做到这一点。