【问题标题】:First message not arriving over an MSMQ/MassTransit Service Bus第一条消息未通过 MSMQ/MassTransit 服务总线到达
【发布时间】:2012-03-09 01:28:21
【问题描述】:

我有一个在 MSMQ 上运行的 MassTransit ServiceBus。看来通过总线发送的第一条消息没有到达,但后续消息呢?

在发送消息之前是否需要在队列或总线上执行一些初始化?

【问题讨论】:

    标签: msmq masstransit


    【解决方案1】:

    这取决于一些设置,系统需要设置多长时间才能正确路由。如果只有第一条消息未能在正确的位置结束,那么订阅数据可能还没有传播到任何地方。 http://readthedocs.org/docs/masstransit/en/develop/overview/subscriptions.html

    使用多播订阅是最简单的选择,它需要在端点启动后几秒钟内向所有其他端点注册订阅者。如果您可以控制服务启动的顺序,那么通常可以通过在流程中从后到前启动来避免这种情况。

    如果您使用的是订阅服务,那么在各处获取数据也可能需要几秒钟的时间。它必须通过订阅服务,但订阅会发送给公共汽车上的每个人。这与 SQL 数据库相关联,数据库的延迟会影响此时间。

    最后,如果您使用的是静态路由,那么它应该会立即生效,因为订阅是在启动时设置的。

    【讨论】:

    • 您能否澄清在消费者重启时第一条消息是否也会因为同样的原因(发布者和订阅服务运行良好)而丢失?
    • 这取决于您在关闭消费者时是否调用取消订阅操作。假设您不这样做,则不会宣布订阅状态的任何更改,并且消息将按预期传递。如果在服务关闭期间调用 unsubscribe 操作,那么会有时间订阅不存在。
    • 七年半了,问题好像还是存在,今天才打的。在发送第一条消息之前等待一段时间没有任何区别。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-26
    • 1970-01-01
    相关资源
    最近更新 更多