Каждый из методов - это Consumer<byte[]>
, и их необходимо назначить определенному имени очереди.Это, вероятно, лучше всего сделать в Map
.
import java.util.function.Consumer;
// ...
Map<String, Consumer<byte[]>> queueToConsumer = new HashMap<>();
queueToConsumer.put(QUEUE_NAME_ONE, this::processobjone);
queueToConsumer.put(QUEUE_NAME_TWO, this::processobjtwo);
// and so on
Затем вы можете использовать это для создания Consumer
s.
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);
}
});
});
Если у вас есть конфликт имен с Consumer
из-за com.rabbitmq.client.Consumer
, вы можете вместо этого объявить карту как Map<String, java.util.function.Consumer<byte[]>>
.