线程池activemq侦听器

时间:2019-05-30 11:58:22

标签: java activemq

我使用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());

    }
}

0 个答案:

没有答案