根据SQS队列上的消息创建助焊剂

时间:2018-11-15 02:19:44

标签: project-reactor

我正在尝试从队列接收的传入消息中创建Flux

例如,如果我使用的是Amazon SQS,如何实现以下代码:

Flux<String> messages = connectionToSQS.receiveFromQueue(queueName);

messages.map(s-> log.info(“ message:{}”,s).subscribe();

经过实验,我发现了以下问题:

  • 如何继续从队列中请求消息(永远循环)?我是否创建一个线程,该线程具有不断从队列中请求的循环?
  • 如何使Flux变冷?除非消费者要求,否则我不想从SQS请求消息。这使我可以使用背压。

首先解决此问题,然后根据Reactor文档生成类似以下代码的内容:

Flux<String> bridge = Flux.create(sink -> {
    myEventProcessor.register(new MyEventListener<String>() { 
        public void onDataChunk(List<String> chunk) {
            for(String s : chunk) {
                sink.next(s); 
            }
        }

        public void processComplete() {
            sink.complete(); 
        }
    });
});

想法是创建一个单线程,该线程继续循环请求消息,然后使用上述观察者模式对收到的每条消息执行next()

0 个答案:

没有答案