服务端点未接收已发布事件

时间:2016-05-11 20:33:34

标签: rebus

我终于开始将我的解决方案部署到我们的开发环境中,并且遇到了我的端点没有收到已发布事件的问题。这确实可以在我的本地计算机上运行,​​但不能在远程服务器之间进行消息聊天时使用。

修改 我也在运行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

任何帮助都会非常赞赏!

1 个答案:

答案 0 :(得分:1)

我注意到你在没有等待结果的情况下打电话给bus.Subscribe<TEvent>()。你应该总是

await bus.Subscribe<TEvent>();

如果您使用async方法,或

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

如果你不是。

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

我发布时你可以正确await - 这很好:)

我怀疑这是MSMQ和队列权限的问题。您是否可以尝试进入计算机管理并查看发布者计算机上的事务死信队列?

tx dead-letters

如果邮件已发送,但由于某些问题(网络问题,用户权限问题,以及其他问题)而未能收到邮件,则它们将最终进入交易死信队列。