Forzar ejecución de un TimerJob en un servidor en concreto - Blog de David Alonso. Microsoft SharePoint, Office 365, Azure y otras tecnologías Microsoft

Blog de David Alonso. Microsoft SharePoint, Office 365, Azure y otras tecnologías Microsoft

Microsoft SharePoint, Azure, Office 365

jueves, 27 de abril de 2017

Forzar ejecución de un TimerJob en un servidor en concreto


Hola a todos,

recientemente me ha pasado que en un proyecto disponiamos de un cluster de varios servidores


  • 2 servidores frontales
  • 2 servidores de aplicación
  • 2 servidores de indexación


Concretamente, los 2 servidores de aplicaciones, los teníamos para lanzar varios timerjobs, que sincronizaban los sistemas de nuestro cliente con su SharePoint por las noches.

Tras un tiempo en ejecución, nos dimos cuenta que los TimerJobs, dejaban tostado el servicio timer de una de las maquinas, por lo que decidimos forzar unos Jobs a un servidor de aplicacion y otros a otra.

Para ello, el TimerJob tiene que tener el siguiente constuctor:

 public NombreTimerJob(string jobName, string jobDescription, SPWebApplication webApplication, SPServer server): base(jobName, webApplication, server, SPJobLockType.Job)
{
}

 En la activación de la Feature, creamos el timerJob y le indicamos el server:

 public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
  SPServerCollection servers = SPFarm.Local.Servers;
  NombreTimerJob  timer = new NombreTimerJob  ("nombre del timer", JobDescription, webApplication, servers["servidor2"]);



De esta forma,  nos aseguramos que ese TimerJob se está ejecutando en el servidor 2.



No hay comentarios:

Publicar un comentario