【发布时间】:2013-02-28 00:42:28
【问题描述】:
我在客户端服务器应用程序的两个选项之间进行选择 -
首先 - 采用多线程服务器的 TCP/IP(基于纯套接字)方法并自行管理发送和接收的同步。
第二种 - 使用 WebSphere MQ 方法 (MQI)。基本上是服务器的一个输入队列和一个输出队列。客户端写入服务器输入队列,服务器将回复与一些相关标识符等放入输出队列。因此只需要 2 个队列。服务器程序是多线程的(线程池),多个线程将读取输入队列并写入输出队列。
问题 - 我倾向于第二种方法,但几乎没有疑问 -
MQI 调用线程安全吗?我必须对队列使用
MQGET和MQPUT的互斥吗?-
基于 MQ 的方法的性能会低于基于套接字的方法吗?我所说的性能是指两件事。
一个。 IBM MQ 队列操作通常比直接套接字连接慢吗?
b.
MQGET和MQPUT上的互斥锁会减慢消息处理速度吗?c。我计划每秒加载大约 10000 条消息(每个大约 100 字节)。回复大小约为 5 KB(XML 消息)。这对于基于 IBM MQ 的方法来说是一种实际负载吗?
注意 - 语言是 C++,服务器的操作系统是 Solaris。
【问题讨论】:
标签: c++ multithreading client-server message-queue ibm-mq