使用AMQP从{Worker}角色连接到Azure Service Bus

时间:2015-12-30 14:32:51

标签: azure amqp azure-worker-roles azureservicebus

我正在尝试使用AMQP从我的工作者角色连接到我的Azure服务总线。但是,我有一个超时例外。当我使用网络嗅探器时,我发现它正在尝试使用端口5671与Azure服务总线进行通信。但是它没有发送ACK消息,它只是超时。我在Visual Studio 2015中使用Azure模拟器尝试此操作。

当我尝试完全相同时,从同一台计算机和网络接口,但从正常的命令提示符应用程序(因此没有Azure工作者角色和/或模拟器),它的工作原理。我的应用程序能够向Azure发送ACK包并从Azure接收服务器Hello。

Azure模拟器或工作者角色是否默认阻止某些端口?为什么它从我的命令提示符应用程序工作,而不是从我的Azure工作者角色?我使用相同的连接字符串和以下代码:

TopicClient client = TopicClient.CreateFromConnectionString(_connectionstring, _queueName);
client.Send(new BrokeredMessage(msg));

2 个答案:

答案 0 :(得分:1)

我终于找到了这个问题。在使用Azure模拟器的解决方案中,我包含以下包:

<package id="WindowsAzure.ServiceBus" version="2.5.1.0" targetFramework="net451" />

在我的控制台应用程序中,我使用了以下软件包:

<package id="WindowsAzure.ServiceBus" version="3.0.9" targetFramework="net46" />

因此,将我的Azure解决方案更改为3.0.9版解决了这个问题。似乎微软在版本3.x中引入了一个重大变化。

答案 1 :(得分:0)

按可能性排序,我猜问题是:

  • _connectionstring在VS与您的控制台应用程序中具有不同的值;可能是由于运行时使用的配置文件和/或您正在加载连接字符串。我建议在CreateFromConnectionString()中使用硬编码值重新测试您的测试以排除这种情况。
  • 有防火墙阻止端口(Windows防火墙,企业网络等)
  • 有一个防病毒干扰流量