当前位置: 首页 > 知识库问答 >
问题:

Netty应用程序-多请求-响应

邢英奕
2023-03-14

我试图以一种干净的方式构建应用程序的体系结构。我想我可以在Netty中做到这一点,因为它是一个著名的java网络框架选项。

我有连接到Netty服务器的设备(通过GPRS的TCP)。假设它们都是永久连接的(保持存活),有几种情况我需要用这个架构来描述:

情况1:设备可以向Netty发送消息,并且Netty响应该消息

情况2:设备可以向Netty发送消息,并且Netty对该消息做出响应,但是Netty应该立即向设备发送多个消息,但是对于每个消息,它必须等待响应才能发送下一个消息

案例3:应用程序中发生了一些事件(在Netty范围之外),Netty应对该事件做出反应,并向特定设备发送消息并从中获得响应

问题:

案例1:很明显

案例2:当您实际拥有同步请求并且Netty是异步框架时,我如何开发这种案例?

案例3:是否有可能进入Netty上下文并获得特定设备的特定连接(html" target="_blank">线程)并向该设备发送消息?

共有1个答案

黎浩然
2023-03-14

您可以在写入中添加一个侦听器,并让它触发下一次写入。

如果您知道哪个ChannelHandlerContext属于您感兴趣的设备(您可以通过在建立每个连接时将其注册到映射中来存储),则可以使用该上下文触发事件。Netty将负责将该事件排队,并确保它在正确的线程和通道中处理。

 类似资料:
  • 我正在编写一个Netty应用程序(Netty 4),其中处理每条消息可能需要一些时间。作为我的意思的一个例子,我创建了一个,它用原始消息响应,尽管有时会在短时间延迟后响应: 使用此代码,不能保证响应的顺序与传入请求的顺序相同。事实上,如果第一条消息由字符串“delay”和其他字符串的第二条组成,则响应的顺序将颠倒!我写了一个测试来说明这一点: 我正在寻找Netty中的内置方式,以确保传出响应的顺序

  • 我正在尝试将API请求负载和响应数据记录到Azure Application Insight。使用跟踪我可以记录。但是我想知道什么是将请求和响应数据记录到application Insight的最佳方法。因为数据是巨大的,所以API调用的数量会更多。我不能仅仅使用跟踪来跟踪数十万个请求和响应数据。我尝试了一些博客,比如使用itelemetryinitializer/httpcontext.feat

  • 我正在尝试创建一个基于网络的网络客户端。我根据网络站点中给出的示例编写了代码。但问题是,响应是由客户端处理程序处理的 我做的一件事是在HttpTarget中创建一个setResponse()方法 因此,基本上我想同步进行,即在HttpSnoopClient中发送一个请求(channel.writeandFlush(req)),然后等待,直到HttpSnoopCLientHandler收到响应 谁能

  • *netty版本:4.0* 你好。我计划使用netty编写一个客户端来处理二进制协议。 该协议相当简单,支持多种类型的请求/响应。通常一个请求被启动,它包含一个字节,通知它是什么类型的请求(对于服务器端),但响应不包含任何信息。它假定客户端正在等待该特定响应。 最初,我的想法是构建一组编码器/解码器,并使用通道双工处理程序对它们进行分组。 我只是想知道最好的方法是拥有几种类型的管道(每个请求/响应

  • 介绍 YurunHttp 的请求响应类,结果类。除了遵循 PSR-7 规范,另外还增加了一些人性化的方法。 类:Yurun\Util\YurunHttp\Http\Response use Yurun\Util\HttpRequest; $http = new HttpRequest; $response = $http->get('http://www.baidu.com'); 方法 响应内

  • 使用Netty 4.0.0.beta1,对我来说,将传入/传出HTTP流量记录到基于Netty的服务器的最佳方式是什么?我的管道当前为: 我尝试编写一个实现的处理程序,然后在方法中进行日志记录,这似乎对传入的请求很好,但这是推荐的方式吗? 当我试图实现时,我未能在方法中看到实际的FullHttpResponse对象。 建议?谢了!