locked
Throttling of incoming request at Exchange Online/Onpremise RRS feed

  • Question

  • Hi

    We are developing an application, where we would be sending mails through Exchane(online/OnPremise). Since the traffic of the mails can be too much, Is it possible that exchange (online/onpremise) throttle the no. of request. I think it does in case of online.

    I came to know, that exchange sends out some next retry time, where we can send the next batch of  data through Exchange. Would like to know how does it return back the next retry time. Also does it return only in case of throttling or there are any other scenario where it return this time?

    Any pointer will be great.

     

    Tuesday, May 3, 2011 1:03 PM

Answers

All replies

  • If your talking Office 365 (or Exchange 2010) then the default Throttling policies will apply which for a batch sending email application these can be to low eg

    MessageRateLimit means you can send no more then 30 message a minutes

    RecipientRateLimit means you can send to no more then 500 recipients in a 24 hour period

    the latter can be a problem for a Lob application where you may be sending an invoice to a large customer list on the first/last day of the month. In a on premise environment you can disable throttling or adjust these rates with Exchange online you can't change the default setting and would be better looking at either setting up your SMTP server for your application to relay through or try to find another service (if you sending marketing emails this is a better options as there are third party companies that have dedicated infrastructure for this type of messaging that takes care of all the issues that surround bulk messaging).

    There are a lot of other throttling setting that affect things like the amount of CPU on particular application can consume or number of Items that can be stored as the result of a findItems operation etc but it really depends on the operations you calling and at what rate

    Cheers

    Glen 

    Wednesday, May 4, 2011 11:20 AM
  • Thanks  for the reply Glen,

     

    Is MessageRateLimit or RecipientRateLimit configurable or are they always same for each mailbox. You mentioned that these apply for batch sending email application. I guess by batch sending email application you meant the batch API of EWS. If yes, will it work if we are not sending message in bulk but as an individual message?

    Also, can I assume in such case exchange online will throw proper error code, so that we can figure out the exact cause of failure and thus backoff?

    Also, would like to know if exchange sends some next request time in case the exchange server is busy. We are asking because we want to back off properly if such a case occurs.

     

     

    Wednesday, May 4, 2011 1:22 PM
  • Those properties i mentioned only affect sending Email through the server EWS has many operations so you need to be specific about the operations your using if you want me to give you a specific answer. The behaviour you will experience if you get throttled will depend on the specific operation eg you may get a try again later response, you operation may just get delayed or you may get a reduced result set or a hard error.  Exchange Online = exchange 2010 so you will get the same error onpremise vs Online the thing you can't do on Exchange Online is adjust the throttling (you maybe able to convince the support/operations team to do it for you if you present your case but you would need to plead that directly with Microsoft) in a onprem environment you can disable throttling per user or create a custom policy for your application.  Recipients are recipients if your sending one message to 500 people this is 500 recipients (I think you fail a the max recipients per message before you got their anyway) and would exceed the throttle although public distribution list only coult as 1 recipient (not 100% on this).

    Cheers

    Glen

    Thursday, May 5, 2011 3:42 AM
  • Glen

     

    The operation I am talking about are mainly:

    1) GetItem()

    2) FindItem()

    3) CreateItem()

    Thursday, May 5, 2011 8:51 AM
  • For FindItem read http://blogs.msdn.com/b/exchangedev/archive/2010/03/12/throttling-policies-and-the-ewsfindcountlimit.aspx

    GetItem and CreateItem if they are batched can be affected by PercentTimeIn elements depending on the amount of time and CPU your operations are going to consume on the CAS server see http://technet.microsoft.com/en-us/library/dd297964.aspx. If you multi threading your application you also need to look at how concurrency may affect your application for a rule of thumb you need to think that the default throttling policy was designed to cater for a single user on a Exchange server so if your application is going to operate outside of what a normal user is going to do then throttling maybe an issue for you but you really need to do your own testing.

    Cheers
    Glen

     

     

     

     

    • Marked as answer by Kunal Garg Friday, May 6, 2011 5:47 AM
    Thursday, May 5, 2011 12:26 PM
  • Thanks Glen,

    I will look into the links provide by you. This is helpful.

     

    --Kunal

    Friday, May 6, 2011 5:47 AM