【问题标题】:Rebus with Azure Service Bus, subscribe to an interfaceRebus 与 Azure 服务总线,订阅一个接口
【发布时间】:2020-06-13 23:47:44
【问题描述】:

我想接收所有实现特定接口的消息:

public interface IBusItem
{
    Guid BusItemId { get; }
    DateTime Timestamp { get; }
}

例如,我有这样一条消息:

public class SomeMessage : IBusItem
{
    public Guid BusItemId { get; set; } = Guid.NewGuid();
    public DateTime Timestamp { get; set; } = DateTime.UtcNow;
    public string Message { get; set; }
}

我有一个用于 SomeMessage 的处理程序和另一个用于 IBusItem 的处理程序。 如果在接收器中我这样做:

bus.Subscribe<SomeMessage>();

然后调用两个处理程序。

但如果我只想订阅 IBusItem:

bus.Subscribe<IBusItem>();

然后不调用任何处理程序

是否可以使用 Rebus 订阅基接口/类?

【问题讨论】:

    标签: rebus rebus-azureservicebus


    【解决方案1】:

    是否可以使用 Rebus 订阅基接口/类?

    很遗憾,没有。

    虽然 Rebus 有 polymorphic dispatch,但这仅适用于收到消息并将其分派给处理程序的情况。

    因此,如果您想接收所有实现IBusItem 的具体类型,您需要为每个类型调用await bus.Subscribe&lt;ConcreteBusItem&gt;()。

    【讨论】:

    • 没问题。可以通过扫描程序集并注册所有实现IBusItem的类来完成
    猜你喜欢
    • 2020-07-06
    • 2018-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    • 2019-03-21
    • 2020-10-08
    相关资源
    最近更新 更多