RabbitMQ - Как обработать дальнейшую обработку сообщения с Consumer.handleDelivery - PullRequest
0 голосов
/ 28 июня 2018

в моей программе я получаю сообщение от Exchange. Я создал свой собственный Consumer и переопределил метод handleDelivery.

Как я могу передать сообщение другому классу и аккуратно обработать сообщение?

Прямо сейчас у меня есть слушатель с методом onNewMessage, который вызывается внутри метода handleDelivery. Проблема, которую я вижу с этим, состоит в том, что метод handleDelivery не завершается, пока я не закончу обработку сообщения (или, по крайней мере, метод onNewMessage).

Можете ли вы помочь мне с этим вопросом?

Большое спасибо!

Редактировать - добавлен код:

@Override
public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {

    eventMsg.add(properties.getHeaders().get("filePath"));
    eventMsg.add(body);

    if(listener != null) {
        listener.onEventConsumed(eventMsg);
    }
}



public void onEventConsumed(List<Object> eventMsg) {
        byte [] evtPayload = (byte[]) eventMsg.get(1);
        String filePath = eventMsg.get(0).toString();
        String jobToStart = config.getJobGlossary().get(filePath);
        activeJobs.add(new Job(filePath, evtPayload, jobToStart, amqpFactory, config));

    }

И обработка продолжается внутри объекта задания.

...