我对MassTransit配置有疑问。 有一个主应用程序和微服务。 例如,Main应用程序向微服务(消费者)发送命令以从帐户中注销资金。
主应用程序中的配置:
var rabbitHost = new Uri("rabbitmq://localhost/app");
services.AddMassTransit(x => {
x.AddBus(provider => Bus.Factory.CreateUsingRabbitMq(cfg => {
var host = cfg.Host(rabbitHost, hostConfigurator => {
hostConfigurator.Username("user");
hostConfigurator.Password("password");
});
}));
});
EndpointConvention.Map<WithdrawFunds>(new Uri(rabbitHost + "/test-queue"));
微服务配置:
var rabbitHost = new Uri("rabbitmq://localhost/app");
services.AddMassTransit(x => {
x.AddBus(provider => Bus.Factory.CreateUsingRabbitMq(cfg => {
var host = cfg.Host(rabbitHost, hostConfigurator => {
hostConfigurator.Username("username");
hostConfigurator.Password("password");
});
cfg.ReceiveEndpoint(host, "test-queue", ep => {
ep.Consumer<WithdrawFundsConsumer>();
});
}));
});
在主应用程序中执行的命令,例如:
await _sendEndpointProvider.Send<WithdrawFunds>(new {
Amount = 100,
AccountId = "someId"
});
MassTransit创建一个“测试队列”队列,如果两个应用程序都在运行,则交互成功进行。但是,如果我停止微服务,那么 创建“ test-queue_skipped”队列,丢失的消息将落入其中。但是,如果我启动微服务,它将不会收到错过的消息。
如何配置MassTransit,以便不创建“ _skipped”,并且消息正在等待使用者显示?