有没有办法使用 MassTransit API 在 SessionIdleTimeout 之前关闭 Azure 服务总线会话?

问题描述 投票:0回答:1

我们已使用以下配置成功激活会话:

cfg.ReceiveEndpoint(endpoint.Item1, e =>
{
    e.RequiresSession = true;
    e.SessionIdleTimeout = TimeSpan.FromMinutes(10);
    e.ConfigureConsumer(context, endpoint.Item2);
});

我们的用例是只要数据库游标打开(当前在 Cosmos 中为 10 分钟)就保持会话打开。我们使用会话来确保随后从游标获取的数据被路由到具有打开游标的特定使用者。

我们想要做的是当我们到达光标中的最后一条记录时关闭会话。此外,我们希望对根本不需要会话的标准 CRUD 操作使用相同的端点。对于这些活动,我想立即结束会议。

MS docs 说:

会话锁应被视为文件上的独占锁,这意味着应用程序应在不再需要会话和/或不需要任何进一步消息时立即关闭会话。

我们似乎可以这样称呼:

_session.CloseAsync();

但我似乎找不到通过大众交通来做到这一点的方法。

masstransit
1个回答
0
投票

会话只能在消息被消费时访问,并且我不相信您可以在消息消费时关闭会话。如果您已经构建了如何完成此操作的概念验证,您可以共享它或向 MassTransit 提交拉取请求以添加它。

© www.soinside.com 2019 - 2024. All rights reserved.