Erstellen eines RoutingAgent-Transport-Agents für Exchange 2013

Erfahren Sie, wie Sie einen benutzerdefinierten RoutingAgent-Transport-Agent für die Verwendung mit Exchange 2013 erstellen.

Gilt für: Exchange Server 2013

Verwandte Codeausschnitte und Beispiel-Apps:

Die Klassen RoutingAgentFactory und RoutingAgent sind die Basisklassen für Transport-Agents, die für die Ausführung im Transportdienst auf einem Exchange Server 2013-Postfachserver konzipiert sind. Die RoutingAgent-Klasse stellt die in der folgenden Tabelle aufgeführten Ereignisse bereit, für die Sie Handler in Ihrem RoutingAgent-Transport-Agent implementieren können.

Tabelle 1. RoutingAgent-Klassenereignisse

Document.SelectionChanged -Ereignis Beschreibung
OnCategorizedMessage
Tritt auf, nachdem der Server die Inhaltskonvertierung durchgeführt hat, sofern dies erforderlich ist.
OnResolvedMessage
Tritt auf, nachdem alle Empfänger der Nachricht aufgelöst wurden und bevor das Routing bestimmt wird.
OnRoutedMessage
Tritt auf, nachdem der Server die Nachricht an den nächsten Hop weitergeleitet und bei Bedarf eine Inhaltskonvertierung durchführt. Der Server verwendet möglicherweise mehr Ressourcen, um jede Nachricht im OnRoutedMessage-Ereignis zu verarbeiten als das OnSubmittedMessage-Ereignis , da der Server alle erforderlichen Inhaltskonvertierungen durchführt und den nächsten Hop in der Route für die Nachricht bestimmt, bevor er den Code im OnRoutedMessage-Ereignishandler ausführt.
OnSubmittedMessage
Tritt auf, nachdem die Nachricht aus der Übermittlungswarteschlange genommen wurde. Verwenden Sie das OnSubmittedMessage-Ereignis , wenn Ihr RoutingAgent-Transport-Agent keine Inhaltskonvertierung, aufgelöste Empfänger oder Routingdaten erfordert.

Erstellen eines benutzerdefinierten RoutingAgent-Transport-Agents

Im folgenden Verfahren wird beschrieben, wie Sie einen benutzerdefinierten RoutingAgent-Transport-Agent erstellen.

So erstellen Sie den Transport-Agent

  1. Fügen Sie Verweise auf die Namespaces hinzu.

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

    Sie finden diese Namespaces auf Ihrem Exchange-Server. Durch Hinzufügen eines Verweises auf diese Namespaces haben Sie Zugriff auf die RoutingAgent-Member sowie auf andere Klassen, die im Beispiel exchange 2013: Erstellen eines Transport-Agents für die Bandbreitenprotokollierung verwendet werden.

  2. Implementieren Sie die abgeleitete Klasse für die RoutingAgentFactory-Klasse .

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

    Dieser Code instanziiert die abgeleitete Klasse und überschreibt die CreateAgent-Methode , um eine Instanz Ihres neuen benutzerdefinierten Agents zu erstellen. In dieser Klasse können auch zusätzliche Methoden wie Close überschrieben werden, um benutzerdefinierten Code auszuführen.

  3. Definieren Sie Ihren Agent.

       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;
           }
       }
    
    

    Nachdem Sie Ihre Agent-Klasse definiert haben, können Sie benutzerdefinierte Funktionen hinzufügen. In diesem Beispiel werden die beiden Ereignisse OnSubmittedMessage und OnRoutedMessagean Ihre benutzerdefinierten Ereignishandler umgeleitet.

Siehe auch