我需要实现一个接收多条消息的侦听器,然后根据某个条件对它们进行分组,然后将分组的消息发送到下一个队列。换句话说,以合理的方式对它们进行批处理。
我正在使用Grails和JMS集成插件。
在我看来,它可以在运行单个线程的侦听器中实现,该线程运行无限循环,永久消耗来自队列的消息,然后在那里执行分组逻辑。
Runnable runnable = new Runnable() {
@Override
public void run() {
while(true) {
def obj = consumer.receive()
//group the messages and store on a list then send them in groups to the next queue
producer.send(groupedObjList)
}
}
}
def thread = new Thread(runnable);
thread.start();
我不确定这是否是一种干净的方式。所以我正在寻找如何实现这一目标的替代方案。