我试图以简单的配置进行一些异常,并注意到创建了一些交换和一个与错误有关的队列:
交流:
-
MassTransit:Fault
-
MassTransit:Fault--ConsoleApp1:Program-YourMessage--
队列:
-
ReceiveEndPointQueue_error
如何更改或自定义上述内容的命名?
Program.cs
:
public static class Program
{
public class YourMessage
{
public string Text { get; set; }
}
public class MyMessage
{
public int Number { get; set; }
}
public static async Task Main(params string[] args)
{
var bus = Bus.Factory.CreateUsingRabbitMq(configuration =>
{
configuration.OverrideDefaultBusEndpointQueueName("DefaultBusEndpointQueue");
configuration.Message<YourMessage>(x =>
{
x.SetEntityName("YourMessageEntity");
});
configuration.Message<MyMessage>(x =>
{
x.SetEntityName("MyMessageEntity");
});
var host = configuration.Host(new Uri("rabbitmq://localhost"), h =>
{
});
configuration.ReceiveEndpoint(host, "ReceiveEndPointQueue", ep =>
{
ep.Handler<YourMessage>(async context => throw new Exception("YourMessage"));
ep.Handler<MyMessage>(async context => await Console.Out.WriteLineAsync($"Received MyMessage: {context.Message.Number}"));
});
});
await bus.StartAsync();
await bus.Publish(new YourMessage{Text = "Hi"});
await bus.Publish(new MyMessage {Number= 42});
Console.WriteLine("Press any key to exit");
Console.ReadKey();
await bus.StopAsync();
}
}
直接引用https://gitter.im/masstransit/masstransit
Ehouarn Perret @ehouarn-perret May 30 20:14 "I am still looking for a way to change the default names of Error Exchanges / Queues when using MassTransit with RabbitMQ, can't find anything in the documentation" Chris Patterson @phatboyg May 30 20:31 "There isnt' a way to change them, it's always queue_error"
鉴于这是Google上的第一结果,这是您可以在上述问题中更改默认故障交换名称的方式:
:
public static class Program
{
public class YourMessage
{
public string Text { get; set; }
}
public class MyMessage
{
public int Number { get; set; }
}
public static async Task Main(params string[] args)
{
var bus = Bus.Factory.CreateUsingRabbitMq(configuration =>
{
configuration.OverrideDefaultBusEndpointQueueName("DefaultBusEndpointQueue");
configuration.Message<YourMessage>(x =>
{
x.SetEntityName("YourMessageEntity");
});
configuration.Message<MyMessage>(x =>
{
x.SetEntityName("MyMessageEntity");
});
// customization of fault starts here
configuration.Message<Fault>(x =>
{
x.SetEntityName("Fault");
});
configuration.Message<Fault<MyMessageEntity>>(x =>
{
x.SetEntityName("FaultMyMessageEntity");
});
configuration.Message<Fault<YourMessageEntity>>(x =>
{
x.SetEntityName("FaultYourMessageEntity");
});
// customization of fault ends here
var host = configuration.Host(new Uri("rabbitmq://localhost"), h =>
{
});
configuration.ReceiveEndpoint(host, "ReceiveEndPointQueue", ep =>
{
ep.Handler<YourMessage>(async context => throw new Exception("YourMessage"));
ep.Handler<MyMessage>(async context => await Console.Out.WriteLineAsync($"Received MyMessage: {context.Message.Number}"));
});
});
await bus.StartAsync();
await bus.Publish(new YourMessage{Text = "Hi"});
await bus.Publish(new MyMessage {Number= 42});
Console.WriteLine("Press any key to exit");
Console.ReadKey();
await bus.StopAsync();
}
}
_error
队列,我没有找到一种更改它的方法,但是它将遵循接收端点名称加上_error
。
https://masstransit.io/documentation/configuration/topology/message
有一种方法可以更改错误队列名称,尽管不太优雅:
Bus.Factory.CreateUsingRabbitMq(cfg =>
{
cfg.SendTopology.ConfigureErrorSettings = settings =>
{
if (settings is RabbitMqErrorSettings rabbitMqErrorSettings)
{
rabbitMqErrorSettings.QueueName = "Your queue name";
}
};
});
应该记住,这不会改变现有的拓扑。如果创建了带有默认名称的队列,则将保留使用相同的绑定。