我使用2个线程来侦听ActiveMQ消息,使用列表来缓存消息,直到大小达到5,侦听器将对其进行处理。但是消息重复,为什么? 我只发送10条消息,但消息未到达10次。
@Component
public class Consumer {
private static final Logger log = LoggerFactory.getLogger(Consumer.class);
private List<TextMessage> list = Collections.synchronizedList(new ArrayList<TextMessage>());
@JmsListener(destination = "HelloWorldQueue")
public void receiveQueue(TextMessage msg) throws Exception {
log.info("message arrive: {}", msg.getText());
batchProcess(msg);
}
private void batchProcess(TextMessage msg) {
list.add(msg);
if (list.size() >= 5) {
log.info("start batch:");
Iterator<TextMessage> it = list.iterator();
while(it.hasNext()) {
process(it.next());
it.remove();
}
}
}
private void process(TextMessage msg) {
log.info("process: {}", msg.getText());
}
}