Rebus 自动取消订阅?
Rebus unsubscribe automatically?
rebus什么时候退订?如果订阅者没有运行,有没有什么东西会在一段时间后自动取消订阅?
我遇到过一些情况,当订阅者服务停止一段时间后,发布者似乎不会继续按他们的方式发送消息。我可能做错了什么?
Rebus 在您 bus.Unsubscribe<SomeMessage>()
时退订。
如果您遇到订阅者突然不再收到已发布消息的情况,这很可能是因为您的发布者"forgetting" 以某种方式订阅了。
您是否使用默认的内存订阅存储启动了发布者?因为这将无法在发布者重新启动后继续存在。
您几乎总是对拥有某种实际持久订阅的方法感兴趣,例如使用SQL服务器做的:
Configure.With(...)
.(...)
.Subscriptions(s => s.StoreInSqlServer(connectionString, "RebusSubscriptions")
.EnsureTableIsCreated())
.(...)
如果您仍然遇到似乎被随机遗忘的订阅者,是否有可能是因为您重命名或移动了事件 class?
订阅作为 (eventType, subscriberInputQueue)
元组存储在发布者的订阅存储中,但 eventType
的实际存储可能因所选订阅存储而异。我可以看到 XML 订阅存储 uses the type's assembly-qualified name as its key, whereas the SQL Server subscription storage uses the type's FullName
作为键 - iow 所选的订阅存储可能具有略微不同的行为(我认为这不是最佳的,但这是抽象设计方式的结果).
当发布者发布时,它会 ask the subscription storage for the subscribers for a given event type,因此由于某种原因,这种查找并不总是 return 您订阅者的输入队列。
由于 XML 订阅存储使用程序集限定名称,它也会对消息程序集的版本更改敏感。
我希望这可以让您了解订阅下降的原因:)
rebus什么时候退订?如果订阅者没有运行,有没有什么东西会在一段时间后自动取消订阅?
我遇到过一些情况,当订阅者服务停止一段时间后,发布者似乎不会继续按他们的方式发送消息。我可能做错了什么?
Rebus 在您 bus.Unsubscribe<SomeMessage>()
时退订。
如果您遇到订阅者突然不再收到已发布消息的情况,这很可能是因为您的发布者"forgetting" 以某种方式订阅了。
您是否使用默认的内存订阅存储启动了发布者?因为这将无法在发布者重新启动后继续存在。
您几乎总是对拥有某种实际持久订阅的方法感兴趣,例如使用SQL服务器做的:
Configure.With(...)
.(...)
.Subscriptions(s => s.StoreInSqlServer(connectionString, "RebusSubscriptions")
.EnsureTableIsCreated())
.(...)
如果您仍然遇到似乎被随机遗忘的订阅者,是否有可能是因为您重命名或移动了事件 class?
订阅作为 (eventType, subscriberInputQueue)
元组存储在发布者的订阅存储中,但 eventType
的实际存储可能因所选订阅存储而异。我可以看到 XML 订阅存储 uses the type's assembly-qualified name as its key, whereas the SQL Server subscription storage uses the type's FullName
作为键 - iow 所选的订阅存储可能具有略微不同的行为(我认为这不是最佳的,但这是抽象设计方式的结果).
当发布者发布时,它会 ask the subscription storage for the subscribers for a given event type,因此由于某种原因,这种查找并不总是 return 您订阅者的输入队列。
由于 XML 订阅存储使用程序集限定名称,它也会对消息程序集的版本更改敏感。
我希望这可以让您了解订阅下降的原因:)