使用公共交通和发件箱模式时,消息不会传递到 RabbitMQ

问题描述 投票:0回答:1

我使用

Outbox Pattern with MassTransit
,当我发布消息时,它将保留在数据库中的OutboxMessages表中,并且不会传递到代理,这是配置:

套餐:

        <PackageReference Include="MassTransit" Version="8.0.15" />
        <PackageReference Include="MassTransit.EntityFrameworkCore" Version="8.0.14" />
        <PackageReference Include="MassTransit.RabbitMQ" Version="8.0.14" />

Program.cs

  private static void AddMessagingConfiguration(IServiceCollection services, WebApplicationBuilder builder)
    {
        services.AddMassTransit(busConfigurator =>
        {
            busConfigurator.AddConsumer<GtsDocumentConsumer>();
            busConfigurator.AddEntityFrameworkOutbox<CompanyGoodsDbContext>(outboxConfigurator =>
            {
                outboxConfigurator.UseSqlServer();
                outboxConfigurator.UseBusOutbox();
                outboxConfigurator.QueryMessageLimit = 10;
                outboxConfigurator.QueryDelay = TimeSpan.FromSeconds(5);
                outboxConfigurator.QueryTimeout = TimeSpan.FromSeconds(2);
            });

            busConfigurator.UsingRabbitMq((busContext, transportConfigurator) =>
            {               transportConfigurator.Host(builder.Configuration["EventBusSettings:HostAddress"], hostConfiguration =>
                {
                    hostConfiguration.Username(builder.Configuration["EventBusSettings:Username"]);
                    hostConfiguration.Password(builder.Configuration["EventBusSettings:Password"]);
                    
                });

                transportConfigurator.AutoStart = true;
                transportConfigurator.UseMessageRetry(r => r.Immediate(5));
                transportConfigurator.UseScheduledRedelivery(r =>
                    r.Intervals(TimeSpan.FromSeconds(5), TimeSpan.FromMinutes(15), TimeSpan.FromMinutes(30)));
                transportConfigurator.ConfigureEndpoints(busContext);
            });
        });
    }

appSetting.json:

"EventBusSettings": {
        "HostAddress": "sgms-broker",
        "Username": "guest",
        "Password": "guest"
    }

请注意,我

dockerize
应用程序及其工作完美,术语
sgms-broker
是登录到我的本地主机的主机名
message broker

Controller:

    private readonly IPublishEndpoint _publish;

    public GtsDocumentsController(IPublishEndpoint publish)
    {
        _publish = publish;
    }

  [HttpPut("add-seen")]
    public async Task<IActionResult> AddSeenHistory([FromBody] AddSeenHistoryCommand command)
    {
        await _publish.Publish(command);
        await documentCommandFacade.AddSeenHistory(command);
        return Ok();
    }

如果我的

Message broker

Down

发件箱模式就可以正常工作

但是当它

Up
时,就像
delivery service
does not
将消息传递到
broker

i have no idea why it does not work.

asp.net rabbitmq masstransit outbox-pattern
1个回答
0
投票

5 小时后,我通过更新 nuget 包修复了错误

© www.soinside.com 2019 - 2024. All rights reserved.