session - 在同步请求-响应模式中使用 session

标签 session azure servicebus azureservicebus

我正在尝试让 session 在以下架构中工作。

  • 多个异构辅助角色,用于监视和处理来自队列 1 的请求,并将其响应发送到队列 2。
  • 一个前端 Web 角色,通过 REST 或 SOAP 接收来自外部的请求,将它们提交到队列 1 中,并等待队列 2 的响应。收到后,响应将返回给调用者。

Web 角色的作用是利用可扩展性,并允许在负载过高时动态创建辅助角色(这就是为什么整个 Ruth Goldberg 机器都离不开服务总线)。

我正在使用以下电话:

MessageSession sess = myQueueClient.AcceptMessageSession(mySessionId, TimeSpan.FromSeconds(timeoutPerSec));

接下来是:

BrokeredMessage bm = sess.Receive();

并且对 AcceptMessageSession 的调用崩溃并烧毁,但出现以下异常:

BR0012无法在不需要 session 的实体上创建 session 消息接收器。创建队列或订阅时确保将 RequiresSession 设置为 true 以启用 session 行为。

现在我将 RequiresSession 设置为 true:

        if (!_queueManager.QueueExists(clientID))
            _queueManager.CreateQueue(clientID).RequiresSession = true;
        else
            _queueManager.GetQueue(clientID).RequiresSession = true;

但这没有帮助。

我做错了什么?

最佳答案

创建队列时,您必须在 QueueDescription 中(而不是在 QueueDescription)中将 RequiresSession 设置为 true 来创建队列已创建队列的

因此,在您的情况下,队列创建应类似于以下内容:

    if (!_queueManager.QueueExists(clientID))
    {
        QueueDescription queueDescription = new QueueDescription(clientID)
        {
            RequiresSession = true
        };
        _queueManager.CreateQueue(queueDescription);
    }

关于session - 在同步请求-响应模式中使用 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26944293/

相关文章:

java - Java EE 应用程序如何在没有任何 main 方法的情况下开始执行以及控制权如何转移到不同的类

java - Java session 超时

c# - 将数据从 Azure Blob 流式传输回客户端

azure - 在组织中的 Office 365 上发布 Office 加载项

python - 如何使用Python登录Facebook/Myspace并爬取内容?

java - 非法尝试将代理与两个打开的 session 相关联

azure - Web API 错误 - 此请求已被阻止;内容必须通过 HTTPS 提供

wcf - 连接到 Azure 服务总线中继的空闲 ServiceHost 上的 CPU 利用率较高

azureservicebus - 我可以将现有的标准服务总线命名空间升级到高级服务总线吗

wcf - 如何使用azure服务总线主题订阅中的对象