Quartz 生成器和异常处理

发布于 2024-12-14 03:13:21 字数 1075 浏览 0 评论 0原文

我有一个工作流程如下:

<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 bean 类的集合,我稍后将其拆分(空过滤器是在我想要的情况下)以停止流动)。

我的问题是 - 假设我连接到数据库时出错,并且组件的初始化失败。什么会阻止生成器一次又一次地尝试调用组件? (并且每次都会产生错误)。

在我看来,好像我处理的事情不太正确,那么实现它来处理异常有什么好处呢?

有什么想法吗?提前致谢!

i have a flow that works as follows:

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

Now, what is actually hapenning is that the generator calls the singleton compnent which does some DB retrieval and returns a collection of a java bean class which i later split (the null filter is in case i want to stop the flow).

My problem is - suppose i have an error connecting to the db and the component's oninitialise fails. What would keep the generator from trying to call the component over and over again? (and producing an error every time).

It looks to me as if i've handling something not quite right, So what would be the good to implement it to deal with exceptions?

Any ideas? thanks in advance!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

慢慢从新开始 2024-12-21 03:13:21

我会尝试以下操作:

  • 以全局方式声明石英端点,
  • 在流程中使用它。
  • 创建自定义异常策略并在流程中使用它。
  • 在此自定义异常策略中注入全局quartz端点。
  • 在此策略中,如果捕获的异常是您认为不可恢复故障的特征,请调用端点.stop()。

清除错误条件后,您需要通过 JMX 重新启动端点。

I would try the following:

  • Declare the quartz endpoint in a global manner,
  • Use it in the flow.
  • Create a custom exception strategy and use it in the flow too.
  • Inject the global quartz endpoint in this custom exception strategy.
  • In this strategy, if the exception caught is one you deem characteristic to unrecoverable failure, call endpoint.stop().

You would need to go through JMX to restart the endpoint after clearing the error condition.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文