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
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.
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.
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.