【问题标题】:Netty channels lifecycleNetty 渠道生命周期
【发布时间】:2019-08-15 20:53:11
【问题描述】:

在阅读了 netty 指南和示例后,我仍然有一些问题:

我的应用与多个第三方端点进行通信。为此,我使用了用 Netty 实现的 http 客户端。 所以基本上流程如下

  1. Http调用执行操作1 --一些业务逻辑处理--
  2. Http调用执行操作2 --一些业务逻辑处理--
  3. Http调用执行操作3 --一些业务逻辑处理--

每个操作都在不同的线程中执行。

Q1:我是否需要为每个新请求创建和关闭通道,或者我只需要为每个 endoint 重用相同的通道并使用它直到可用。

Q2:当我与多个系统通信时,我想我必须使用某种通道池?

Q3:如果我必须重用频道,如何处理关闭的频道。假设我有多个线程想要触发对同一通道的 http 请求,而第一个线程因为连接关闭而失败。我是否需要协调/锁定线程以等待新通道的创建并仅在新通道再次打开后才允许继续?

Q4:我何时希望每个端点拥有多个通道? (也许我想利用更好的处理器内核?)

【问题讨论】:

    标签: java http netty


    【解决方案1】:

    这是一个非常好的教程,它展示了它是如何工作的。 Netty IO。您只需要创建一些资源一次。作为线程的事件循环组可以重复使用。从本质上讲,如果您正确设置了频道,您实际上并不需要担心频道。只需使用通道读取和写入,或使用处理程序来完成工作。完成后,关闭通道但不要关闭 EventLoopGroup,因为您需要将其交给另一个引导程序。如果要建立大量连接,可以使用通道池,但通常没有必要。

    我还推荐本指南,它将回答您的其他问题。它告诉你如何从其他线程更好地写入通道,等等。 Netty Best Practices

    您的其他问题非常具体。如果不是另外一两个教程,为什么不设置一个测试主方法或一个测试单元并在运行完这两个链接后自己尝试一下? Netty 可以是一个复杂的野兽,你几乎可以做任何你想做的事情,但它确实提供了你在入门网络级别所需的一切,而不需要太多的复杂性。 Another one for the road,也可以查看他们的样品Examples from Netty。他们的示例代表了最常见的用例和基本级别的网络协议。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-19
      • 2012-11-02
      • 2017-02-11
      • 2020-01-26
      • 2013-09-30
      • 2013-04-06
      • 1970-01-01
      • 2014-10-08
      相关资源
      最近更新 更多