EWS Exchange使用一个ExchangeService连接模拟2个或更多用户

时间:2016-05-04 20:09:12

标签: c# exchange-server exchangewebservices

为了避免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();
}

1 个答案:

答案 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个用户,考虑到您对订阅的流失量,您实际上不再需要这个。当您使用模拟时,只要您不使用同一邮箱锚定任何组,连接数就不是问题。

干杯 格伦