0

我正在构建一个简单的 Azure 工作者角色来订阅 zeromq 发布者(在工作者中使用 NetMQ)并将消息存储到 Azure 表中。

当我在我的开发机器上运行工作程序时,一切正常。消息进来并被写入表中。

但是,当我将工作人员部署到 Azure 时,某些东西会停止工作。我可以附加到工作人员并看到它卡在阻塞的subscriberSocket.Receive() 调用上。从工作人员的角度来看,订阅套接字不会出现任何消​​息。

我已经对工作人员进行了 RDP,并使用 netstat 我可以看到从订阅套接字到远程发布者的传出连接已建立,因此它看起来不像是防火墙问题。

从日志/诊断信息来看,一切似乎都很正常,只是没有收到任何消息。

我错过了一些 Azure 配置吗?允许传出连接但阻止数据通过的东西?

工人代码的相关部分:

private async Task RunAsync(CancellationToken cancellationToken)
    {
        Trace.TraceInformation("Running Task.");
        using (var eDDNcontext = NetMQContext.Create())
        using (var subscriberSocket = eDDNcontext.CreateSubscriberSocket())
        {
            Trace.TraceInformation("Subscribing to EDDN.");


            var endpoint = GetEndpoint("EDDNEndpoint");
            subscriberSocket.Connect("tcp://eddn-relay.elite-markets.net:9500");
            subscriberSocket.Subscribe(String.Empty);

            while (!cancellationToken.IsCancellationRequested)
            {
                Byte[] rawMessage = subscriberSocket.Receive();  //Azure deployment gets stuck on this blocking call.
                if (rawMessage.Length < 3) continue;
                using (MemoryStream memoryStream = new MemoryStream(rawMessage))
                {
                    //Read past the first two bytes of the zlib header.
                    memoryStream.Seek(2, SeekOrigin.Begin);
                    using (DeflateStream deflateStream = new DeflateStream(memoryStream, CompressionMode.Decompress))
                    using (StreamReader reader = new StreamReader(deflateStream, Encoding.UTF8))
                    {
4

0 回答 0