我正在尝试移植使用TThreadedServer
的应用程序以使用TThreadPoolServer
。我目前正以这种方式使用课程:
TThreadPoolServer server(
processor),
server_transport,
transport_factory,
protocol_factory);
server.serve()
当客户端尝试连接时,出现以下异常:
终止引发一个实例'apache :: thrift :: concurrency :: IllegalStateException'what():ThreadManager :: Impl :: add ThreadManager未启动
我看到在ThreadManager
TThreadPoolServer
的构造函数中正在创建here实例。如果必须将ThreadManager对象传递给TThreadPoolServer
的构造函数,我不确定为什么构造函数会创建ThreadManager
对象。我试图创建一个ThreadManger
对象并按给定的start()
调用here方法,但是PosixThreadFactory
不再是Thrift框架的一部分。我是否必须实现ThreadFactory
抽象类?您可以通过提供示例用法来帮助我弄清楚吗?
我个人发现Thrift TestServer和TestClient是很好的入门资源。它们概述了各种可能的选项,包括不同的服务器类型。如果从源代码构建,则可以从命令行运行服务器和客户端。这使得在自己实施之前测试特定场景相当容易。
对于TThreadPoolServer
,您可以在the TThreadPoolServer creation之后的行中找到相关部分。这应该显示设置带有基本参数的TThreadPoolServer
所需的所有步骤。
有帮助吗?