【问题标题】:Sync call (blocking) from Netty 5.x handler来自 Netty 5.x 处理程序的同步调用(阻塞)
【发布时间】:2014-11-07 13:14:05
【问题描述】:


我有一个关于在 Netty 中调用阻塞函数的问题(例如:一个 jdbc 函数)。
据我所知,不应从 nio 事件循环执行程序进行此调用,因为此循环必须保持非阻塞状态才能处理其他请求。
对于当前的 Netty 版本(5.0 Alpha),我可以考虑以下选项:

  • 1。使用 DefaultEventExecutorGroup 调度此阻塞调用。
  • 2。使用 java.util.concurrent.ExecutorService。

  • 这些选项有效吗?
    第二个选项是安全使用上下文的有效选项吗?
    是否建议使用另一个选项来避免 nio 事件循环执行器中的同步锁?
    谢谢你。

    【问题讨论】:

      标签: java netty


      【解决方案1】:

      两者都有效,而第一个确保每个频道的顺序正确。所以在大多数情况下,1) 是要走的路。

      【讨论】:

      • 泰。你能解释一下:每个频道的正确顺序吗?我看不出这两种方法之间的区别。 1)将为我的同步任务的每个执行者使用一个队列。但似乎我不会为频道获得相同的执行程序(从我的同步组执行程序获得的执行程序)。我将获得相同的 nio 执行器来发送响应,但根据我的测试,syncCallExecutorGroup.submit() 中使用的执行器将成为我同步组中的下一个执行器。所以 task1 -> syncExecutor1, task2 -> syncExecutor2,两者都将使用相同的 nioExecutor1 来发送响应。但是顺序不是强制的,resp1,resp2。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-07
      • 1970-01-01
      • 2013-11-29
      • 2012-01-25
      • 1970-01-01
      相关资源
      最近更新 更多