我正在寻找在高消息流量下线程化 C++ Apache QPID 客户端以获得最佳性能的最佳方法。
我们的经纪人将包括 3 个交易所,每个交易所都有 2 个单向队列。c++ 客户端将推送到的 3 个“上行链路”队列上会有大量流量。
有几个文档很少的类用于与 QPID 代理接口。连接、会话、发送者和接收者。连接提供会话,会话提供发送者或接收者。在阅读了各种 QPID 文档后,我不清楚这些对象中哪些是线程安全的(或不是线程安全的),或者哪些会导致在客户端库中创建线程。根据 QPID FAQ,代理的线程发生在会话级别。没有提到它发生在客户端的位置。
客户端应用程序中有多个线程上下文需要将数据推送到上行链路队列之一。最好有一个服务于多个上下文的会话、连接或发件人池吗?或者 QPID 是否在这种情况下内置了优化,这可能意味着 1 个共享发件人就足够了?
目标是在某处不存在单线程瓶颈,而是能够根据存在的流量负载有效地并行扩展。