我有一些我想在我的网络应用程序中执行的非关键清理操作。我希望将它交给一个异步进程,但我没有任何可用的 JMS 提供程序(而且我不太可能在时间表内获得批准)。
我喜欢 Spring MDP 的想法,但我看到的所有示例都明确地将它与某种 JMS 实现联系起来。是否可以将其绑定到基于 java.util.Queue 接口的 Queue 实现?我在想我可以将消息推送到队列并使用 Spring MDP 来处理它们。
我在吠叫错误的树吗?
我有一些我想在我的网络应用程序中执行的非关键清理操作。我希望将它交给一个异步进程,但我没有任何可用的 JMS 提供程序(而且我不太可能在时间表内获得批准)。
我喜欢 Spring MDP 的想法,但我看到的所有示例都明确地将它与某种 JMS 实现联系起来。是否可以将其绑定到基于 java.util.Queue 接口的 Queue 实现?我在想我可以将消息推送到队列并使用 Spring MDP 来处理它们。
我在吠叫错误的树吗?
也许您可以使用异步任务来进行清理。您可以拥有一个CleanUp
提供 @Asnyc 注释方法的组件。TaskExecutors 隐式使用队列来处理待处理的任务(如普通 Java 的 ExecutorService)。还可以选择在队列中收集提交的清理请求,并让它们由计划任务处理。
另一种选择可能是Guava 的 EventBus。使用 spring 设置一个应该是直截了当的,并且有一个 AsynchronousEventBus 可用。
您可以在应用程序中嵌入 ApacheMQ BrokerService
<bean id="broker" class="org.apache.activemq.broker.BrokerService" init-method="start">
<property name="transportConnectorURIs">
<list>
<value>tcp://localhost:61616</value>
</list>
</property>
</bean>
现在您可以将它用作普通的 ApacheMQ。