Неопределенный тип метода - PullRequest
0 голосов
/ 13 июня 2018

Я хочу максимально сократить этот Java-код:

Consumer consumerone = new DefaultConsumer(channel) {
    @Override
    public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties,
            byte[] body) throws IOException {
        processobjone(body);
    }
};
channel.basicConsume(QUEUE_FIRST_NAME, true, consumerone);

Consumer consumersec = new DefaultConsumer(channel) {
    @Override
    public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties,
            byte[] body) throws IOException {
        processobjsec(body);
    }
};
channel.basicConsume(QUEUE_SEC_NAME, true, consumersec);

// Processing

private void processobjone(byte[] body) {       
    // handle obj
}

private void processobjsec(byte[] body) {   
    // handle obj
}

// .... and many more

Я пробовал это возможное решение, но получаю несколько ошибок:

import java.util.function.Consumer;

Map<String, Consumer<byte[]>> queueToConsumer = new HashMap<>();
queueToConsumer.put(ElementTypeEnum.QUEUE_TRANSACTION, this::process_transaction);
queueToConsumer.put(ElementTypeEnum.QUEUE_API_ATTEMPT, this::process_api_attempt);

queueToConsumer.forEach((queueName, consumer) -> {
    channel.basicConsume(queueName, true, new DefaultConsumer() {
        @Override
        public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
            consumer.accept(body);
        }
    });
});

private void process_transaction(byte[] vv) {       
}

private void process_api_attempt(byte[] vv) {       
}

Это ошибки, когда явнесены изменения:

The method basicConsume(String, boolean, Consumer) in the type Channel is not applicable for the arguments (String, boolean, new DefaultConsumer(){})

Можете ли вы посоветовать, как мне решить проблемы?Возможно, мне нужно изменить шаблон, который используется для перенаправления на правильные методы Java?

1 Ответ

0 голосов
/ 14 июня 2018

Похоже, что DefaultConsumer не был импортирован, поэтому компилятор не может его распознать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...