服务端点未收到已发布的事件

Service endpoint not receiving published events

我终于开始将我的解决方案部署到我们的开发环境,但我 运行 遇到了一个问题,即我的端点没有接收到已发布的事件。这确实在我的本地机器上有效,但在远程服务器之间聊天时无效。

编辑 我也是 运行 作为网络服务的 windows 服务,rebus 日志记录工作正常。

这是我的配置设置:

出版商

Configure.With(new SimpleInjectorContainerAdapter(container))
                .Transport(t => t.UseMsmq("Identity.Web"))
                .Subscriptions(s => s.StoreInSqlServer("Integration", "Subscription", true, true))
                .Options(b => b.EnableMessageAuditing("Identity.Web.Audit"))
                .Options(b => b.SimpleRetryStrategy(errorQueueAddress: "Identity.Web.Error"))
                .Start();

端点接收器

var bus = Configure.With(new CastleWindsorContainerAdapter(container))
                .Transport(t => t.UseMsmq("Comply360.User.Management"))
                .Subscriptions(s => s.StoreInSqlServer("Integration", "Subscription", isCentralized: true))
                .Options(b => b.EnableMessageAuditing("Comply360.User.Management.Audit"))
                .Options(b => b.SimpleRetryStrategy(errorQueueAddress: "Comply360.User.Management.Error"))
                .Logging(l => l.Serilog(Log.Logger))
                .Start();

            bus.Subscribe<UserCreated>();
            bus.Subscribe<UserUpdated>();

发布代码如下:

await this.bus.Publish(new Events.UserUpdated
    {
        UserId = notification.Id,
        Firstname = notification.Firstname,
        Lastname = notification.Lastname,
    });

以及我的订阅商店中的两条记录:

Identity.Events.UserCreated, Identity.Messages  Comply360.User.Management@MACHINE
Identity.Events.UserUpdated, Identity.Messages  Comply360.User.Management@MACHINE

如有任何帮助,非常感谢

我注意到您在未等待结果的情况下致电 bus.Subscribe<TEvent>()。你应该总是

await bus.Subscribe<TEvent>();

如果您使用的是 async 方法,或者

bus.Subscribe<TEvent>().Wait();

如果你不是。

但是我不认为那是你的问题的原因。

我可以看到你在发布时 await 正确 - 很好 :)

我怀疑这是 MSMQ 和队列权限的问题。您能否尝试转到“计算机管理”并查看发布者计算机上的事务性死信队列?

如果消息已发送,但由于某些问题(网络问题、用户权限问题等)而未到达收件人,它们将最终进入事务性死信队列。

我在 functionapp 和 EventHub 上工作时遇到了同样的问题。 FunctionApp 的 pre-warned 个实例数应比 EventHub 分区数 equal/grater 个。更改此配置后,我即将完美地获得所有事件。