如何用netty解决阻塞问题?

时间:2017-09-22 09:17:16

标签: java netty amazon-sqs

我们在使用Netty库方面遇到了一些挑战。库应该是非阻塞的,因此所有请求都应该发送到单独的任务。我们通过从客户端向Amazon Simple Queue Service(SQS)发送消息来解决此问题。将从其他服务读取队列,该特定服务将消息写入其他队列。

这是棘手的部分。现在我们必须阅读这个队列。处理此问题的最佳选择是什么?

目前我们在handler.channelActive方法

中安排任务
sf = ctx.executor().scheduleAtFixedRate(() -> {
                        System.out.println("Calling..." + ctx.channel().id().asShortText());                       

                        handleWriteAction();

                    }, WRITE_TIMER_IN_SECONDS, WRITE_TIMER_IN_SECONDS, TimeUnit.SECONDS);

问题在于它看起来像是阻止传入的消息。有些客户确实有几秒钟的延迟。这没问题,但其他人确实有一分钟的延迟。

那么,我们如何在不阻止传入消息的情况下解决队列的读取?

正在使用Netty 4.1.13,客户端与我们的网络服务器有一个开放的连接。

0 个答案:

没有答案