Поделиться через


Создание транспортного агента RoutingAgent для Exchange 2013

Узнайте, как создать пользовательский транспортный агент RoutingAgent для использования с Exchange 2013.

Область применения: Exchange Server 2013 г.

Связанные фрагменты кода и примеры приложений:

Классы RoutingAgentFactory и RoutingAgent являются базовыми классами для агентов транспорта, которые предназначены для запуска в транспортной службе на сервере почтовых ящиков Exchange Server 2013. Класс RoutingAgent предоставляет события, перечисленные в следующей таблице, для которых можно реализовать обработчики в транспортном агенте RoutingAgent.

Таблица 1. События класса RoutingAgent

Событие Описание
OnCategorizedMessage
Происходит после того, как сервер выполнит преобразование содержимого, если это необходимо.
OnResolvedMessage
Происходит после того, как все получатели сообщения были разрешены и до определения маршрутизации.
OnRoutedMessage
Происходит после того, как сервер направляет сообщение в следующий прыжок и при необходимости выполняет преобразование содержимого. Сервер может использовать больше ресурсов для обработки каждого сообщения в событии OnRoutedMessage , чем событие OnSubmittedMessage , так как сервер выполнит любое необходимое преобразование содержимого и определит следующий прыжок в маршруте сообщения перед выполнением кода в обработчике событий OnRoutedMessage .
OnSubmittedMessage
Происходит после того, как сообщение снято из очереди отправки. Используйте событие OnSubmittedMessage , если агенту транспорта RoutingAgent не требуется преобразование содержимого, разрешенные получатели или данные маршрутизации.

Создание пользовательского агента транспорта RoutingAgent

В следующей процедуре описывается создание пользовательского агента транспорта RoutingAgent.

Создание агента транспорта

  1. Добавьте ссылки на пространства имен.

       using Microsoft.Exchange.Data.Mime;
       using Microsoft.Exchange.Data.Transport;
       using Microsoft.Exchange.Data.Transport.Routing;
    
    

    Эти пространства имен можно найти на сервере Exchange Server. Добавив ссылку на эти пространства имен, вы получите доступ к членам RoutingAgent , а также к другим классам, используемым в примере агента транспорта ведения журнала пропускной способности Exchange 2013 .

  2. Реализуйте производный класс для класса RoutingAgentFactory .

       public class BandwidthLoggerFactory : RoutingAgentFactory
       {
           public override RoutingAgent CreateAgent(SmtpServer server)
           {
               return new BandwidthLogger(server);
           }
       }
    
    

    Этот код создаст экземпляр производного класса и переопределит метод CreateAgent , чтобы создать экземпляр нового пользовательского агента. Дополнительные методы, такие как Close, также можно переопределить в этом классе для выполнения пользовательского кода.

  3. Определите агент.

       public class BandwidthLogger : RoutingAgent
       {
           // Your custom code goes here
           public BandwidthLogger(SmtpServer server)
           {
               Debug.WriteLine(logPrefix + "Agent constructor");
               this.server = server;
               this.OnSubmittedMessage += SubmittedMessage;
               this.OnRoutedMessage += RoutedMessage;
           }
       }
    
    

    После определения класса агента можно добавить пользовательские функции. В этом примере два события OnSubmittedMessage и OnRoutedMessageперенаправляются в пользовательские обработчики событий.

См. также