【发布时间】:2017-07-16 00:28:29
【问题描述】:
我有 15 年的 C 程序连接到 IBM MQ。它有一部分代码,它试图同步一些东西,当有几个 MQ 时,它来自数据库。
但是现在我们只有一个 MQ。我必须使用这种同步方法吗?
#include "dte_mq.h"
#include <string.h>
#include <stdlib.h>
typedef struct tagDTE_QUEUE_DESCRIPTOR
{
MQHOBJ handle;
int IsSyncpointControled;
} DTE_QUEUE_DESCRIPTOR, *PDTE_QUEUE_DESCRIPTOR;
static MQHCONN sHConn = 0;
static MQLONG sCompCode = MQCC_OK;
static MQLONG sReason = MQRC_NONE;
static int sNumOpenQueues = 0;
static PDTE_QUEUE_DESCRIPTOR sQueues = NULL;
#define MAX_NUM_OPEN_QUEUES 10
for(i = 0; i < MAX_NUM_OPEN_QUEUES; i++)
{
if(sQueues[i].handle == -1)
{
*qd = i;
sQueues[i].handle = hObj;
sQueues[i].IsSyncpointControled = 0;
break;
}
}
如果q=-1 的值在循环中得到0 并退出循环,我们现在需要这个逻辑吗?
如果您需要,我可以将整个代码写入问题中。
【问题讨论】:
-
如果
MAX_NUM_OPEN_QUEUES现在为 1,则不需要循环。 -
qd - 队列描述符怎么样?
-
显示的代码没有显示
qd是如何定义或使用的;这是不可能的。 -
当您只有一个 MQ 与数据库通信时,您是否还需要使用 IsSyncpointControled?