我想使用某种机制来做这样的事情 - 我有一个应用服务器获取处理订单的请求。一个请求可以有一个订单或两个订单。要处理订单,应用程序需要调用外部供应商,供应商一次最多可以处理5个订单。我想创建一个组件,如果可用,最多可批量处理5个订单,并向供应商发出一个请求,然后当我收到响应时,将响应重新分配给相应的请求。组件将等待,例如,在发出批量请求之前2秒,第一个请求到达。
我想过使用JMS,但是在JMS中,消费者会在消息到达时处理消息(订单),消费者一次处理一条消息。我正在考虑使用常规队列(ArrayBlockingQueue)并在使用ScheduledTimerTask触发之前批量处理订单。有没有人有任何想法 - 提前谢谢。
答案 0 :(得分:1)
您描述的大多数内容都可以使用Apache Camel完成。它可以配置为限制,批量和转发请求。
Aggregator执行“max等待X消息然后转发请求”
答案 1 :(得分:0)
没有什么可以阻止您使用JMS。只需为从队列中提取的操作设置超时,当您有5条消息或超时时,就可以处理批处理。