session - Azure、SubscriptionClient.OnMessage 和 session

标签 session azure azureservicebus servicebus

当订阅需要 session 时,Azure 服务总线订阅客户端是否支持使用 OnMessage 操作?

我有一个订阅,名为“TestSubscription”。它需要一个 sessionId 并包含通过 SessionId 绑定(bind)在一起的多部分数据。

if (!namespaceManager.SubscriptionExists("TestTopic", "Export"))
{
    var testRule = new RuleDescription
    {
        Filter = new SqlFilter(@"(Action='Export')"),
        Name = "Export"
    };

var subDesc = new SubscriptionDescription("DataCollectionTopic", "Export")
{
    RequiresSession = true
};
namespaceManager.CreateSubscription(sub`enter code here`Desc, testRule);
}

在一个单独的项目中,我有一个 Service Bus Monitor 和 WorkerRole,在 Worker Role 中,我有一个 SubscriptionClient,名为“testSubscriptionClient”:

testSubscriptionClient = SubscriptionClient.CreateFromConnectionString(connectionString, _topicName, CloudConfigurationManager.GetSetting("testSubscription"), ReceiveMode.PeekLock);

然后,我希望在将新项目放入服务总线队列时触发 OnMessage:

testSubscriptionClient.OnMessage(PersistData);

但是,当我运行代码时,我收到以下消息:

InvalidOperationException:需要 session 的实体不可能创建非 session 消息接收器

我正在使用 Azure SDK v2.8。

我想要做的事情可能吗?我是否需要在服务总线监视器、订阅客户端或其他地方进行特定设置,以便我以这种方式从订阅中检索消息。附带说明一下,这种方法在我不使用 session 数据的其他情况下非常有效。

最佳答案

你能试试这个代码吗:

var messageSession=testSubscriptionClient.AcceptMessageSession();

messageSession.OnMessage(PersistData);

除此之外:

testSubscriptionClient.OnMessage(PersistData);

编辑: 此外,您还可以注册处理程序来处理 session (RegisterSessionHandler)。它会在每次新操作时触发您的句柄。

我认为这更适合您的问题。

他在这article中展示了两种方式。 。它用于队列,但我认为您也可以将其应用于主题。

关于session - Azure、SubscriptionClient.OnMessage 和 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36135960/

相关文章:

java - 是在声明 session 的 servlet 中使 session 无效还是在使用其值的 jsp 页面中使 session 无效更好?

Azure更改源和基于分区的查询

msbuild - 在 Azure Project 上缩小并包含 js 和 css 文件

c# - 有没有办法从 .Net 中创建 azure 服务总线命名空间?

azure - 通过 Powershell 或 API 扩展 Azure 服务总线

ruby-on-rails - Rails 中的 CookieOverflow 和小型 session

php - 警告 : mysqli_fetch_array() expects parameter 1 to be mysqli_result, 数组给定 index.php 的第 10 行

azure - 了解 Azure B2C Auth 流程 - Oauth 2.0 和 openID 连接

azure - 如何在 Azure CLI 中显示死信消息

php - 运输车的双向 session