0

我在 Spring 项目中有一个 ActiveMQ 消费者,其定义方式如下:

<jms:listener-container container-type="default"
    cache="consumer" destination-type="queue" connection-factory="pooledJmsConnectionFactory"
    acknowledge="auto" concurrency="1-1">
    <jms:listener destination="GIVE_A_NAME_QUEUE"
        ref="someLongWorkerConsumer" method="onMessage" />
</jms:listener-container>

一切正常,当我在队列中收到一条消息时,将访问 onMessage 方法,并且正在使用来自队列中提供的项目的数据执行工作。

现在,因为我正在执行一些长时间运行的操作,在某些情况下,例如,如果作业运行超过 X 小时 - 我希望中止操作并提取队列中的下一个项目并且处理。

这个或任何可取的解决方案是否有一些开箱即用的功能?

4

1 回答 1

0

ActiveMQ 中没有内置的功能来管理这种作业处理。它实际上并不属于 JMS API 的职责范围。您可以改用它们的同步接收方法并在您自己的应用程序中管理它或将消息委托给某个作业管理器。

于 2013-03-18T14:00:43.170 回答