Timer Job – Multiples Ejecuciones

Durante el proyecto que estamos llevando a cabo en la empresa para la que trabajo, tuvimos que hacer un Timer Job. La funcionalidad que este tiene es el de mandar un Newsletter a las personas que se suscribieron a ciertos sitios. Basicamente el Timer Job recorre todos los sitios creados en una web application, busca los usuarios subscriptos y manda las noticias. Después de terminar el desarrollo, lleve el timer job para deployarlo en una maquina que utilizamos como integración.

Cuando lo instalo y pruebo andaba, pero me mandaba muchísimos mails de más. Cuando voy a mirar el  history log aparecía como que se ejecutaba múltiples veces.

Me puse a investigar y leyendo un poco descubrí que en la creación del Timer Job, hay un parámetro que se llama SPJobLockType.

Este parametro puede estar entre los siguientes valores:

SPJobLockType.None: El Timer Job se ejecuta en todas las maquinas del farm donde el servicio se instaló. A no se que lo asocie para ejecutarse en un server especifico, en cuyo caso ejecuta solo en ese.

SPJobLockType.ContentDatabase – Se ejecuta una vez por cada content database asociada a la web application.

SPJobLockType.Job – Se ejecuta solo en una maquina del farm.

Como yo necesitaba que se ejecute solo un vez en todo el farm, utilicé SPJobLockType.Job y problema resuelto.

Espero les sirva para el desarrollo de sus Timer Jobs.

Nos leemos…

 

Leave a Reply

Your email address will not be published. Required fields are marked *