为了避免Exchange Server限制RCAMaxConcurrency(0-100),我想编写一个只使用一个连接就能处理多达5000个用户的侦听器服务(streamlistener)。我已经拥有200个测试帐户,另一个帐户拥有对这200个测试帐户的冒充权限。 如果可能的话,避免转换所有账户会很好。
我们已经有了代码,并且只对1个用户进行模拟就可以了。
public void SuscribeToCalendar()
{
// Set the email address of the account to get the appointment.
service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.PrincipalName, "xxxxxxxxx");
// Subscribe to streaming notifications in the Inbox.
StreamingSubscription streamingSubscription = service.SubscribeToStreamingNotifications(
new FolderId[] { WellKnownFolderName.Calendar }, EventType.Created, EventType.Modified, EventType.Moved);
// Create a streaming connection to the service object, over which events are returned to the client.
// Keep the streaming connection open for 30 minutes.
StreamingSubscriptionConnection connection = new StreamingSubscriptionConnection(service, 30);
connection.AddSubscription(streamingSubscription);
connection.OnNotificationEvent += OnNotificationEvent;
connection.OnDisconnect += OnDisconnect;
connection.Open();
}
答案 0 :(得分:2)
RCAMaxConcurrency不会影响EWS,它会影响使用RPC进行连接的Outlook连接。影响EWS的是EWSMaxConcurrency,默认情况下它的值低得多。 (你也会受到EWSMaxSubscriptions的影响,这是20)。
模拟设置会影响EWS请求的标头,因此您无法再模拟每个呼叫的一个用户,因此在创建订阅时,您需要为每个订阅的用户拨打一个电话。您可以使用以下https://msdn.microsoft.com/en-us/library/office/dn458789(v=exchg.150).aspx将订阅组合在一起进行模拟连接。
群组的限制是每个群组有200个用户,考虑到您对订阅的流失量,您实际上不再需要这个。当您使用模拟时,只要您不使用同一邮箱锚定任何组,连接数就不是问题。
干杯 格伦