Создание транспортного агента 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.
Создание агента транспорта
Добавьте ссылки на пространства имен.
using Microsoft.Exchange.Data.Mime; using Microsoft.Exchange.Data.Transport; using Microsoft.Exchange.Data.Transport.Routing;
Эти пространства имен можно найти на сервере Exchange Server. Добавив ссылку на эти пространства имен, вы получите доступ к членам RoutingAgent , а также к другим классам, используемым в примере агента транспорта ведения журнала пропускной способности Exchange 2013 .
Реализуйте производный класс для класса RoutingAgentFactory .
public class BandwidthLoggerFactory : RoutingAgentFactory { public override RoutingAgent CreateAgent(SmtpServer server) { return new BandwidthLogger(server); } }
Этот код создаст экземпляр производного класса и переопределит метод CreateAgent , чтобы создать экземпляр нового пользовательского агента. Дополнительные методы, такие как Close, также можно переопределить в этом классе для выполнения пользовательского кода.
Определите агент.
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перенаправляются в пользовательские обработчики событий.