Netty:ctx.channel().writeAndFlush(out) 在从 Netty 工作线程以外的线程发送数据时不起作用

Netty: ctx.channel().writeAndFlush(out) not working when data is being sent from thread other than Netty's worker thread

我在我的一个项目中使用 Netty。有一个流程,我必须从其他线程(其他 netty 的工作线程)向客户端发送一些数据:

final ChannelFuture writeAndFlushFuture = ctx.channel().writeAndFlush(out)
                        .addListener(new GenericFutureListener<Future<? super Void>>() {
                            @Override
                            public void operationComplete(Future<? super Void> future) throws Exception {
                                LOGGER.info("=========> dsgdsfgdsfgdfsgdfsgsdgfd");
                            }
                        });

此外,我正在等待客户端收到我的负载后的响应。我也将超时与它相关联,以便每当客户端未在时间范围内回复时,我都会关闭来自服务器的上下文(假设连接错误)。

发生了一些奇怪的事情。每当我将有效载荷发送给客户端时,我都不会在我的日志中打印出来

dsgdsfgdsfgdfsgdfsgsdgfd

但是,它在我因超时关闭连接之前被打印出来。我不确定我可能做错了什么,没有立即发送有效负载,而是在关闭连接之前。

这里可能发生了什么?

实际上,当我将对象写入上下文时缺少刷新:

ctx.writeAndFlush(commands);

现在,它工作正常。但奇怪的是,它在Netty的工作线程中执行时工作正常,即使没有刷新。