public void pass(Message message) {
        logger.info("pass message {} to queueId {}",
                message.getId(), queueId);
        if (previous == null) {
            previous = message;
        } else if (previous.getId() >= message.getId()) {
            logger.error("queue id {} bad order {} >= {}",
                    new Object[] {queueId, previous.getId(), message.getId()});
            ++numProblems;
        } else {
            previous = message;
        }
        if (++gotMessages == maxMessages) {
            logger.info("end queue id {}", queueId);
            latch.countDown();
        } else if (gotMessages > maxMessages) {
            logger.error("overflow of queue {} with {}",
                    queueId, message.getId());
            ++numProblems;
        }
    }