Creación de un agente de transporte RoutingAgent para Exchange 2013

Obtenga información sobre cómo crear un agente de transporte RoutingAgent personalizado para usarlo con Exchange 2013.

Se aplica a: Exchange Server 2013

Fragmentos de código relacionados y aplicaciones de ejemplo:

Las clases RoutingAgentFactory y RoutingAgent son las clases base de los agentes de transporte diseñadas para ejecutarse en el servicio de transporte en un servidor de buzón de Exchange Server 2013. La clase RoutingAgent proporciona los eventos enumerados en la tabla siguiente para los que puede implementar controladores en el agente de transporte RoutingAgent.

Tabla 1. Eventos de clase RoutingAgent

Evento Descripción
OnCategorizedMessage
Se produce después de que el servidor realice la conversión de contenido, si es necesario.
OnResolvedMessage
Se produce después de que se hayan resuelto todos los destinatarios del mensaje y antes de determinar el enrutamiento.
OnRoutedMessage
Se produce después de que el servidor enrute el mensaje al próximo salto y realice la conversión de contenido, si es necesario. El servidor podría usar más recursos para procesar cada mensaje del evento OnRoutedMessage que el evento OnSubmittedMessage porque el servidor realizará cualquier conversión de contenido necesaria y determinará el próximo salto en la ruta del mensaje antes de ejecutar el código en el controlador de eventos OnRoutedMessage .
OnSubmittedMessage
Se produce después de que el mensaje se quita de la cola de envío. Use el evento OnSubmittedMessage si el agente de transporte RoutingAgent no requiere conversión de contenido, destinatarios resueltos o datos de enrutamiento.

Creación de un agente de transporte de RoutingAgent personalizado

En el procedimiento siguiente se describe cómo crear un agente de transporte RoutingAgent personalizado.

Para crear el agente de transporte

  1. Agregue referencias a los espacios de nombres.

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

    Puede encontrar estos espacios de nombres en el servidor exchange. Al agregar una referencia a estos espacios de nombres, tendrá acceso a los miembros RoutingAgent , así como a otras clases usadas en el ejemplo exchange 2013: compilación de un agente de transporte de registro de ancho de banda .

  2. Implemente la clase derivada para la clase RoutingAgentFactory .

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

    Este código creará una instancia de la clase derivada e invalidará el método CreateAgent para crear una instancia del nuevo agente personalizado. Los métodos adicionales, como Close, también se pueden invalidar en esta clase para ejecutar código personalizado.

  3. Defina el agente.

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

    Después de definir la clase de agente, puede agregarle funcionalidad personalizada. En este ejemplo, los dos eventos OnSubmittedMessage y OnRoutedMessagese redirigen a los controladores de eventos personalizados.

Vea también