如何监视与订阅创建相关的EWS SOAP消息



我们有一个spring-java应用程序,它使用EWS连接到2016年之前的Exchange服务器,并"流式"提取电子邮件。每30分钟进行一次新的30分钟订阅(通过新线程(。我们假设旧的连接刚刚过期。

当一个实例在我们的环境中运行时,它运行得很好,但当两个实例运行时,一段时间后,一个实例最终会开始抛出关于的错误

您的帐户已超过可用的并发连接数。请在其他请求完成后重试。

这似乎是一个问题,然后会受到限制。我发现Exchange服务器配置为:

EWSMaxConcurrency=27, MaxStreamingConcurrency=10,
HangingConnectionLimit=10

我们的代码以前没有明确关闭连接和取消订阅(在没有一个实例的情况下运行良好(。我们尝试将两者都包括在内,但问题仍然存在,并且我们注意到StreamingSubscriptionConnection的关闭方法抛出错误。处理Exchange服务器的团队可以找到引用上述超过连接计数错误的错误,但与关闭连接错误无关

...[m.e.w.d.n.StreamingSubscriptionConnection.close(349)]: java.lang.Exception: microsoft.exchange.webservices.data.notification.StreamingSubscriptionConnection

目前,我们没有太多能力在exchange服务器端进行更改。我不熟悉SOAP消息,但我计划研究如何监视它们,看看有哪些入站和出站消息,以获得一些见解

对于服务,我设置了service.setTraceEnabled(true)service.setTraceFlags(EnumSet.allOf(TraceFlags.class)

然而,当电子邮件到达时,我只在控制台中看到跟踪消息。当创建订阅/连接时,我在启动过程中看不到任何消息

有人能为我如何监控这些与订阅相关的消息提供任何建议吗?

我尝试过使用SOAPUI,但在应用服务器的WSDL时遇到了困难。我考虑过使用Tunnelij插件进行intellij,但我不太熟悉如何设置

我怀疑Exchange服务器端存在一些间歇性延迟问题,可能是响应消息没有及时返回,这可能是错误的。我想,如果我监视这些SOAP消息,那么在错误出现之前,我应该会看到超过10个订阅请求

CAS(客户端访问服务器(上的EWS日志应包含有关节流问题的详细信息。你在应用程序中使用模拟吗?如果你不使用模拟,那么并发连接将从你使用模拟的帐户中收费,并从你的模拟帐户中收费。这里的区别在于,如果你使用模拟,一个用户不能拥有超过10个流媒体订阅(除非你修改了web.config(,而你可以将你的应用程序扩展到1000个用户https://github.com/MicrosoftDocs/office-developer-exchange-docs/blob/main/docs/exchange-web-services/how-to-maintain-affinity-between-group-of-subscriptions-and-mailbox-server.md

相关内容

最新更新