Преобразование традиционных сообщений / очереди в поток в реакторе - PullRequest
0 голосов
/ 01 июля 2019

У меня есть существующая цепочка интерфейсов со многими MessageProducer реализациями.

interface MessageProducer {
    void produce(MessageQueue messageQueue);
}

interface MessageQueue {
    void submit(Message message);
}

Как адаптировать это к реактору Flux с минимально возможным изменением интерфейса?Что-то вроде

class FluxMessageQueueAdapter implements MessageQueue {
   private Flux<Message> flux = ... 

   public void submit(Message message) {
      flux.next(message);
   }
}

1 Ответ

0 голосов
/ 02 июля 2019

Кажется, что одно решение может быть

MessageProducer producer = 
Flux.push((emitter) -> {
            FluxMessageQueueAdapter adapter = new FluxMessagerQueueAdapter(emitter);
            producer.produce(adapter);
            emitter.complete();
    })
        .subscribe(System.out::println);
...