2013-07-04 21 views
5

Mam problem z próbą przekonania Quartz.NET do pracy z AdoJobStore. Żadne z pozostałych pytań nie wydaje się być przyczyną problemu, którym jestem. Byłem w stanie sprawić, żeby działało poprawnie bez konfiguracji AdoJobStore, ale chciałbym, aby wszystko pozostało w końcu, ale dostaję błąd, próbując GetScheduler(), którego nie mogę zrozumieć.Konfigurowanie Quartz.NET za pomocą SQL Server AdoJobStore

Oto mój kwarc app.config sekcja:

<quartz> 
    <add key="quartz.scheduler.instanceName" value="XxxDefaultQuartzScheduler"/> 
    <add key="quartz.scheduler.instanceId" value="instance_one"/> 

    <add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool, Quartz"/> 
    <add key="quartz.threadPool.threadCount" value="10"/> 
    <add key="quartz.threadPool.threadPriority" value="1"/> 

    <add key="quartz.jobStore.type" value="Quartz.Impl.AdoJobStore.JobStoreTX, Quartz"/> 
    <add key="quartz.jobStore.misfireThreshold" value="60000"/>  
    <add key="quartz.jobStore.dataSource" value="default"/> 
    <add key="quartz.jobStore.driverDelegateType" value="Quartz.Impl.AdoJobStore.SqlServerDelegate, Quartz"/>   
    <add key="quartz.jobStore.lockHandler.type" value="Quartz.Impl.AdoJobStore.UpdateLockRowSemaphore, Quartz"/> 
    <add key="quartz.jobStore.tablePrefix" value="QRTZ_"/> 

    <add key="quartz.dataSource.default.connectionString" value="Server=(local);Database=Quartz;UID=XXXX;PWD=XXXX"/> 
    <add key="quartz.dataSource.default.provider" value="SqlServer-20"/> 
    <add key="quartz.dataSource.useProperties" value="true"/> 
</quartz> 

A oto odpowiedni kod inicjalizacji:

var config = (NameValueCollection) ConfigurationManager.GetSection("quartz"); 

ISchedulerFactory factory = new StdSchedulerFactory(config); 

// This is where an ArgumentOutOfRange exception occurs: 
IScheduler scheduler = factory.GetScheduler(); 

a błąd jestem coraz to ArgumentOutOfRangeException:

Długość nie może być mniejsza niż zero. \ r \ n Nazwa parametru: długość

Krok po kroku Mogę zweryfikować, że sekcja konfiguracji zostanie poprawnie odczytana, a ja dwukrotnie i potrójnie sprawdzam pod kątem błędów pisowni i błędnej kapitalizacji właściwości konfiguracji. Zweryfikowałem, że baza danych jest dostępna z connectionString, którą mam.

Jedną rzeczą, którą zauważyłem podczas przechodzenia przez kod i sprawdzania zmiennej fabrycznej w okienku bezpośrednim jest to, że zawsze mówi "AllSchedulers: Count = 0" - nie jestem pewien, czy to dlatego, że nie stworzyłem jeszcze jednej lub jeśli to część mojego problemu. Próbując dać GetScheduler()instanceName od konfiguracji -

factory.GetScheduler("XxxDefaultQuartzScheduler") 

nie działa albo.

Czego mi brakuje/robię źle? Proszę o poradę.

+0

Dla każdego, kto odwiedza to pytanie, należy usunąć właściwość 'quartz.jobStore.lockHandler.type', która wymusza użycie kwarcu w mniej wydajnej strategii blokowania, co spowoduje wyświetlenie ostrzeżeń. twoje dzienniki. –

Odpowiedz

8

Ok, zorientowałem się, mój własny problem - właściwości kwarcu. dataSource. UseProperties powinny być kwarcowe. jobStore .useProperties

Powiązane problemy