gpt4 book ai didi

masstransit - 了解 MassTransit 中的 SubscribtionEndpoint 和 RecieveEndpoint

转载 作者:行者123 更新时间:2023-12-04 12:01:02 28 4
gpt4 key购买 nike

我正在尝试结合 Azure 服务总线了解 MassTransit 配置。

在配置时,有 2 个方法具有重载:SubscriptionEndpoint<T>RecieveEndpoint .我如何理解使用 MT 和 ASB 进行消息传递的工作原理。

有两种消息:事件和命令。事件通过 Publish<T> 发布方法并传递到一个主题。它们可以被许多不同的应用程序使用。命令通过 Send<T> 发送方法并传递到队列。来自队列的消息仅被消费一次(例如并发阅读器)。

所以,我认为 SubscribtionEndpoint 代表事件配置,因此它有 <T>通过类型约定进行路由,RecieveEndpoint 用于连接命令发送者和命令处理程序。

但是我的测试应用程序说无论天气如何我使用 SubscribtionEndpoint 或 RecieveEndpoint,我仍然可以接收事件。

让我们考虑一个例子:

cfg.ReceiveEndpoint(host, queueName: "AnotherSubscirber2", configure: configurator =>
{
configurator.Handler<ObjectCreatedB>(context =>
{
Console.WriteLine("Another subscirber, object b created");
return Task.CompletedTask;
});
});

第二个参数的名称为 queueName,但用作主题的订阅者名称。当我使用 publishEndpoint.Publish<ObjectCreatedB> 发布事件时,我能够处理这个消息。
所以 MT 已经订阅了这个主题:

enter image description here

它怎么知道它需要听 ObjectCreatedB ?队列名称是 AnotherSubscirber2但是 MT 创建了订阅 AnotherSubscirber2反而。参数命名是否正确?

如果我添加此代码,我仍然可以完成相同的操作:
cfg.SubscriptionEndpoint<ObjectCreatedB>(host, subsriberName, configurator =>
{
configurator.Consumer<ObjectBCreatedEventHandler>();
});

那么,有什么区别呢?那么如何注册命令处理程序而不是事件处理程序?或者我错过了什么?我的示例代码是 here .

提前致谢!

最佳答案

RecieveEndpoint用于订阅 Azure 服务总线队列(您可以传递队列名称),而 SubscriptionEndpoint用于订阅 Azure 服务总线主题订阅(您可以传递主题路径和订阅名称)。

更多关于发送与发布的信息,请访问 MassTransit documentation .

关于masstransit - 了解 MassTransit 中的 SubscribtionEndpoint 和 RecieveEndpoint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53546116/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com