System.RAP 报告 属性 IStatelessServiceInstance.OpenDuration Azure 服务结构项目错误的警告

System.RAP reported Warning for property IStatelessServiceInstance.OpenDuration error with azure service fabric project

我正在开发一个 Azure Service Fabric 项目,该项目使用 Apache.NMS .NET 库从 ActiveMQ 读取消息,并创建持久消费者以从特定的 ActiveMQ 读取消息。

我能够阅读消息并且一切正常,但我收到如下警告。

'System.RAP' reported Warning for property 'IStatelessServiceInstance.OpenDuration'. The api IStatelessServiceInstance.Open on node _Node_0 is stuck.

此警告导致服务出错,因此我需要删除该警告。

任何人为什么它会给我警告。

这是我阅读邮件的方式的快照。

try
{
    ITopic dest = AMQSession.GetTopic(TopicName);

    using (IMessageConsumer consumer = AMQSession.CreateDurableConsumer(dest, SubscriptionName, MessageSelector, false))
    {
        IMessage message;
        while ((message = consumer.Receive()) != null)
        {
            ITextMessage txtMsg = message as ITextMessage;            
        }
    }
}
catch (Exception ex)
{
    Close();
}
finally
{
    Close();
}

这个问题几乎可以肯定是因为你这里的代码会永远阻塞。具体来说,如果没有消息到达,consumer.Receive() 将永远阻塞。正如 the documentation 所述:

Waits until a message is available and returns it

此外,即使消息确实到达,while循环确保包含方法永远不会return。

我建议您在尝试使用消息时指定一个超时时间。如果超时结束,那么 Receive 将 return null 并且循环将被打破并且代码将不再被阻塞。