0

我有一个应用程序定期调用一些数据服务(使用扭矩箱调度程序),当数据集可用时,它应该分别处理每个“数据记录”。

我想同时处理这些记录以获得更好的性能,我的第一个想法是设置 jms 队列(在盒子的扭矩箱中可用),以便计划的作业将所有接收到的数据放入队列中,并且每条记录都会被挑选up(对于连接的多个接收器之一)进行处理。

但是,在同一个应用程序的元素之间放置 JMS 队列不是过度工程吗?您可以在这里建议任何其他方法吗?

4

2 回答 2

2

JMS 队列可能根本不是一个糟糕的解决方案,请尝试一下,看看它是如何为您工作的。当它们像在 Torquebox 中一样易于使用时,就不需要过度设计了。

如果您想要较少涉及的内容,我建议使用 Java 自己的BlockingQueue s,LinkedBlockingQueueArrayBlockingQueue取决于具体的用例。

这些只是像数组或散列这样的常规集合,因此您需要在某处创建它们并将它们传递到您希望能够从中发布和使用的组件中。它们也没有像 JMS 队列那样的任何确认概念。

于 2013-02-23T20:27:34.773 回答
0

由于 HornetQ 是 JBoss/Torquebox 的一部分,然后使用消息处理器来处理消息,如何使用 Java 消息队列(如您所提到的)。您还可以在torquebox.rb(或.yml)中指定并发级别。

Your_Scheduled_Job -> /queues/my_queue -> TorqueBox::Messaging::MessageProcessor

在您的 config/torquebox.rb 文件中,您可以指定并发和名称消息处理器:

queue '/queues/my_queue' do
  processor MyMessageProcessor do
    concurrency 5
  end
end

消息处理器将同时处理队列中的消息,而不需要任何其他步骤。

我还在尝试使用 Torquebox 和 Ruby 并发,而这些天我正在尝试实现这一点......

于 2013-03-26T16:44:58.510 回答