我有一个在MSMQ上运行的MassTransit ServiceBus。看来通过总线发送的第一条消息没有到达,但后续消息呢?
在发送消息之前是否需要在队列或总线上执行某些初始化?
答案 0 :(得分:3)
这取决于系统在一切正确路由之前需要设置的时间的一些设置。如果只有第一条消息未能在正确的位置结束,那么订阅数据可能还没有传播到任何地方。 http://readthedocs.org/docs/masstransit/en/develop/overview/subscriptions.html
使用多播订阅是最简单的选择,在端点启动后需要几秒钟,并向所有其他端点注册订阅者。如果您可以控制启动服务的顺序,那么通常可以通过在流程中重新开始来避免这种情况。
如果您正在使用订阅服务,那么在任何地方获取数据也需要几秒钟。它必须通过订阅服务,但订阅将发送给总线上的每个人。这与SQL db绑定,db的延迟可能会影响此时间。
最后,如果您正在使用静态路由,那么这应该立即起作用,因为订阅是在启动时设置的。