【问题标题】:Accessing Azure Service Bus Queue from Azure Website从 Azure 网站访问 Azure 服务总线队列
【发布时间】:2015-06-02 03:28:21
【问题描述】:

部署到云后,我无法从 Azure 网站访问 Azure 服务总线队列。 在本地主机上运行时,如果工作正常,我可以向队列发送消息,但如果我部署应用程序,在远程服务器上创建 QueueClient 时出现异常:

"套接字连接被中止,因为异步发送到 套接字未在分配的超时时间内完成 00:00:59.4820817。分配给此操作的时间可能是 较长超时的一部分。”

我正在使用 QueueClient.CreateFromConnectionString(connectionString) 方法。调试器显示 connectionString 变量一切正常。

连接字符串为:

Endpoint=sb://[removed].servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=[removed]

我尝试将“Copy Local = True”设置为所有引用但没有成功。 我正在使用 WindowsAzure.ServiceBus 2.6.4 nuget。

此外,如果队列存在,则不会在 NamespaceManager.QueueExists(name) 上引发异常,但如果存在则在 NamespaceManager.CreateQueue(name) 上引发异常不存在。

有人遇到过这样的问题吗?提前感谢您的任何提示。

更新 1:

为了澄清,我提供了代码块和跟踪输出:

System.Diagnostics.Trace.TraceError("BEGIN");
var queueClient = QueueClient.CreateFromConnectionString(this.configuration.ServiceBusConnectionString, "points");
System.Diagnostics.Trace.TraceError(this.configuration.ServiceBusConnectionString);
queueClient.Send(new BrokeredMessage());   
System.Diagnostics.Trace.TraceError("END");

产生输出:

  • 连接到应用程序日志...

  • 2015-03-29T01:40:29 欢迎您,您现在已连接到日志流服务。

  • 应用程序:2015-03-29T01:40:41 PID[1952] 错误开始

  • 应用程序:2015-03-29T01:40:44 PID[1952] 错误端点=sb://[removed-before-posting].servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=[发布前删除]

  • 应用程序:2015-03-29T01:41:48 PID[1952] 错误套接字 连接被中止,因为异步发送到套接字 在 00:00:59.5586593 的分配超时时间内未完成。这 分配给此操作的时间可能是较长时间的一部分 超时。

更新 2

使用 Azure 存储 API 或 SQL 服务器时没有连接问题。

更新 3

网站实例和服务总线命名空间都是在北欧地区创建的。

【问题讨论】:

  • 那么,当您到达传递connectionString 参数的点时,变量holding 会填充您上面描述的内容?你能分享一下:1)你在哪里存储connectionString? 2) 你如何读取它并将它分配给那个变量?
  • 还有,你如何初始化namespaceManager?
  • 是的,在传递连接字符串参数时,变量持有正确的连接字符串,在我的主要帖子中提到。 1. 我在 web.config 中存储了一个连接字符串,2) 我正在使用 CloudConnectionManager 来获取它。
  • var manager = NamespaceManager.CreateFromConnectionString(connectionString); if (!manager.QueueExists("Points")) { // 已移除 } // 此时无异常。
  • 我真的看不出有什么奇怪的。您能否使用提供的示例进行测试 -> azure.microsoft.com/en-us/documentation/articles/… 并查看它是否有效(创建一个新的命名空间等)。至少我们可以缩小范围是代码问题还是命名空间的 SB 问题。

标签: azure azure-web-app-service servicebus azureservicebus azure-servicebus-queues


【解决方案1】:

我也无法获取连接字符串(在 Azure UI 中可用)以使队列工作,但我发现当我使用 Powershell 命令时

Get-AzureSBNamespace -Name $servicebusNamespace

为了获取连接字符串,它提供了一个完全不同的实际工作的连接字符串。所以现在我使用以下代码来配置我的所有服务总线队列:createServiceBusQueue.ps1

【讨论】:

    猜你喜欢
    • 2017-02-25
    • 1970-01-01
    • 2015-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-17
    • 2018-04-01
    • 2013-08-19
    相关资源
    最近更新 更多