Кварцевый генератор и обработка исключений - PullRequest
1 голос
/ 06 ноября 2011

у меня есть поток, который работает следующим образом:

<flow name="ChatListener">
    <quartz:inbound-endpoint jobName="eventTimer"
        repeatInterval="${chatListener.pollingInterval}">
        <quartz:event-generator-job />
    </quartz:inbound-endpoint>
    <filter ref="ActiveTrainingFilter" />

    <component>
        <singleton-object class="com.ChatListener.ChatListener" />
    </component>



    <not-filter>
        <payload-type-filter expectedType="org.mule.transport.NullPayload" />
    </not-filter>

    <collection-splitter />

    <vm:outbound-endpoint path="ChatMsgs"
        exchange-pattern="one-way" />
    <default-exception-strategy>
        <vm:outbound-endpoint path="ErrorMsgs"/>
    </default-exception-strategy>
</flow>

Теперь, что действительно происходит, так это то, что генератор вызывает одноэлементный компонент, который выполняет некоторый поиск в БД и возвращает коллекцию класса Java-бина,Позже я разделю (нулевой фильтр на случай, если я захочу остановить поток).

Моя проблема - предположим, у меня возникла ошибка при подключении к БД, и инициализация компонента не удалась.Что помешает генератору пытаться вызывать компонент снова и снова?(и выдает ошибку каждый раз).

Мне кажется, что я справляюсь с чем-то не совсем правильным, так что было бы хорошо, если бы реализовать это для обработки исключений?

Есть идеи?заранее спасибо!

1 Ответ

0 голосов
/ 06 ноября 2011

Я бы попробовал следующее:

  • Объявить конечную точку кварца глобальным способом,
  • Использовать ее в потоке.
  • Создать стратегию настраиваемого исключенияи использовать его также в потоке.
  • Внедрить глобальную конечную точку кварца в эту стратегию настраиваемых исключений.
  • В этой стратегии, если обнаружена исключительная ситуация, для которой характерна неисправимая ошибка, вызовите конечную точку.stop ().

Вам потребуется пройти через JMX, чтобы перезапустить конечную точку после сброса состояния ошибки.

...