是否可以配置多个Timer EJB

时间:2012-06-18 20:50:33

标签: java java-ee amazon-web-services ejb-3.1 amazon-sqs

我有一个使用@Schedule注释的EJB以类似cron的方式执行某些企业逻辑。

我正在使用JBoss 7.1 final。

问题是此方法正在使用来自AWS SQS服务的消息,在该API中,一次最多可以获取10条消息。这导致很多消息被添加到SQS中,但没有足够快地消耗掉。 所以我想问的是,是否有一种方法可以创建一个池,并且有两个或三个EJB可以从SQS处理消息。

1 个答案:

答案 0 :(得分:0)

我已经添加了一些评论以进行一些澄清,但无论如何,这是一个可能适用于您的案例的想法。

  1. 使用调度的EJB按顺序使用来自SQS队列的消息。由于您可以获取的消息数量明显受到限制,因此您可能需要多次调用SQS服务。现在处理消息,只需将它们发送到“中间”JMS队列中。

  2. 使用常规消息驱动Bean(MDB)处理“中间”JMS队列中的消息。您可以指定池大小等,并让应用程序。服务器管理负载。 JMS消息的处理将是并发的。

  3. 这符合EJB规范,并且相对干净。但是,稍微增加了技术复杂性。此外,它假设原始问题是SQS消息的处理顺序是根本问题,而不仅仅是SQS消息的读取