amqsget.c 从mq中读取消息
#include
#include
#include
#include
#include "amqsget.h"
#include "commonfunc.h"
int mqsGet(unsigned char *sRecvBuffer)
{
MQOD od =
{MQOD_DEFAULT}; MQMD md =
{MQMD_DEFAULT}; MQGMO gmo =
{MQGMO_DEFAULT};
MQHCONN Hcon; MQHOBJ Hobj; MQLONG O_options; MQLONG C_options; MQLONG CompCode; MQLONG OpenCode; MQLONG Reason; MQLONG CReason; MQBYTE buffer[65536]; MQLONG buflen; MQLONG messlen; char QMName[50];
int iret =
0;
char
smqRecvQueNm[50]; char
smqSendQueNm[50]; char
smqQueMngNm[50]; char
smqQueOpenOptn[50]; char
smqQueClsOptn[50];
memset(smqRecvQueNm, 0,
sizeof(smqRecvQueNm));
memset(smqSendQueNm, 0,
sizeof(smqSendQueNm));
memset(smqQueMngNm, 0,
sizeof(smqQueMngNm));
memset(smqQueOpenOptn, 0,
sizeof(smqQueOpenOptn));
memset(smqQueClsOptn, 0,
sizeof(smqQueClsOptn));
memset(sRecvBuffer, 0, sizeof(buffer));
memset(buffer, 0, sizeof(buffer));
iret = ReadINIFile("MQMANAGELIST", "mqMngNm",
smqQueMngNm, "main.ini" );
if ( iret != 1 ) { WriteLog("SEND",
"配置文件中没有找到节点[mqMngNm]\n");
return 1;
}
iret = ReadINIFile("MQMANAGELIST",
"mqQueOpenOptn", smqQueOpenOptn, "main.ini" );
if ( iret != 1 ) { WriteLog("SEND",
"配置文件中没有找到节点[mqQueOpenOptn]\n");
return 1;
}
iret = ReadINIFile("MQMANAGELIST",
"mqQueClsOptn", smqQueClsOptn, "main.ini" );
if ( iret != 1 ) { WriteLog("SEND",
"配置文件中没有找到节点[mqQueClsOptn]\n");
return 1;
}
iret = ReadINIFile("MQQUEUELIST", "mqRecvQueNm",
smqRecvQueNm, "main.ini" );
if ( iret != 1 ) { WriteLog("SEND",
"配置文件中没有找到节点[mqRecvQueNm]\n");
return 1;
}
//WriteLog("SEND", "smqRecvQueNm=[%s],
smqQueMngNm=[%s], smqQueOpenOptn=[%s], smqQueClsOptn=[%s]\n\n",
smqRecvQueNm, smqQueMngNm, smqQueOpenOptn, smqQueClsOptn);
//WriteLog("SEND", "Sample AMQSGET0
start\n");
QMName[0] =
0; strncpy(od.ObjectName, smqRecvQueNm,
MQ_Q_NAME_LENGTH);
strncpy(QMName, smqQueMngNm,
MQ_Q_MGR_NAME_LENGTH);
MQCONN(QMName, &Hcon, &CompCode, &CReason);
if (CompCode == MQCC_FAILED)
{
WritePrintLog( "MQCONN ended
with reason code %d\n", CReason);
//exit( (int)CReason );
return 1;
}
if (0 != strlen(smqQueOpenOptn))
{
O_options = atoi(
smqQueOpenOptn );
//WriteLog("SEND",
"open options are %d\n", O_options);
}
else
{
O_options =
MQOO_INPUT_AS_Q_DEF | MQOO_FAIL_IF_QUIESCING
; }
MQOPEN(Hcon, &od, O_options, &Hobj, &OpenCode, &Reason);
if (Reason != MQRC_NONE)
{
WritePrintLog( "MQOPEN ended
with reason code %d\n", Reason);
}
if (OpenCode == MQCC_FAILED)
{
WritePrintLog( "unable to open
queue for input\n");
return 1;
}
CompCode =
OpenCode;
gmo.Options =
MQGMO_WAIT |
MQGMO_NO_SYNCPOINT |
MQGMO_CONVERT; gmo.WaitInterval =
15000;
//while (CompCode != MQCC_FAILED)
if (CompCode != MQCC_FAILED)
{
buflen = sizeof(buffer) -
1;
memcpy(md.MsgId, MQMI_NONE,
sizeof(md.MsgId));
memcpy(md.CorrelId, MQCI_NONE,
sizeof(md.CorrelId));
md.Encoding = MQENC_NATIVE;
md.CodedCharSetId =
MQCCSI_Q_MGR;
MQGET(Hcon, Hobj, &md, &gmo, buflen, buffer, &messlen, &CompCode, &Reason);
if (Reason != MQRC_NONE)
{
if (Reason ==
MQRC_NO_MSG_AVAILABLE)
{ WritePrintLog(
"no more messages\n");
}
else
{
WritePrintLog(
"MQGET ended with reason code %d\n", Reason);
if
(Reason == MQRC_TRUNCATED_MSG_FAILED)
{
CompCode
= MQCC_FAILED;
}
}
}
if (CompCode !=
MQCC_FAILED)
{
buffer[messlen]
=
'\0'; WritePrintLog(
"message \n", buffer);
strcpy(sRecvBuffer,
buffer);
}
}
if (OpenCode != MQCC_FAILED)
{
if (0 !=
strlen(smqQueClsOptn))
{
C_options =
atoi( smqQueClsOptn );
WritePrintLog(
"close options are %d\n", C_options);
}
else
{
C_options =
MQCO_NONE; }
MQCLOSE(Hcon, &Hobj, C_options,
&CompCode, &Reason);
if (Reason != MQRC_NONE)
{
WritePrintLog(
"MQCLOSE ended with reason code %d\n", Reason);
}
}
if (CReason != MQRC_ALREADY_CONNECTED )
{
MQDISC(&Hcon, &CompCode, &Reason);
if (Reason != MQRC_NONE)
{
WritePrintLog(
"MQDISC ended with reason code %d\n", Reason);
}
}
if(0 == strlen(buffer)) {
//WritePrintLog("接收到的报文为空\n");
return 1;
}
else {
WritePrintLog("buffer=[%s]\n",
buffer);
strcpy(sRecvBuffer,
buffer);
}
//WriteLog("SEND", "Sample AMQSGET0
end\n");
return(0);
}
amqsput.c 向mq中发送消息
#include
#include
#include
#include
#include "amqsput.h"
#include "commonfunc.h"
#include "codeConv.h"
int mqsPut(char * sOutBuffer)
{
FILE *fp;
MQOD od =
{MQOD_DEFAULT}; MQMD md =
{MQMD_DEFAULT}; MQPMO pmo =
{MQPMO_DEFAULT};
MQHCONN Hcon; MQHOBJ Hobj; MQLONG O_options; MQLONG C_options; MQLONG CompCode; MQLONG OpenCode; MQLONG Reason; MQLONG CReason; MQLONG messlen; char buffer[65535]; char QMName[50];
WritePrintLog("Sample AMQSPUT0
start\n");
int iret = 0;
char sQMName[50];
char sQInName[50];
char sQOutName[50];
char smqQueOpenOptn[50];
char smqQueClsOptn[50];
char sSendDynamicQueNm[50];
memset(sQMName, 0, sizeof(sQMName));
memset(sQInName, 0, sizeof(sQInName));
memset(sQOutName, 0, sizeof(sQOutName));
memset(smqQueOpenOptn, 0,
sizeof(smqQueOpenOptn));
memset(smqQueClsOptn, 0,
sizeof(smqQueClsOptn));
memset(sSendDynamicQueNm, 0,
sizeof(sSendDynamicQueNm));
iret = ReadINIFile("MQMANAGELIST", "mqMngNm",
sQMName, "main.ini" );
if ( iret != 1 ) { WritePrintLog(
"配置文件中没有找到节点[mqMngNm]\n");
return 1;
}
iret = ReadINIFile("MQQUEUELIST", "mqRecvQueNm",
sQInName, "main.ini" );
if ( iret != 1 ) { WritePrintLog(
"配置文件中没有找到节点[mqRecvQueNm]\n");
return 1;
}
iret = ReadINIFile("MQQUEUELIST", "mqSendQueNm",
sQOutName, "main.ini" );
if ( iret != 1 ) { WritePrintLog(
"配置文件中没有找到节点[mqSendQueNm]\n");
return 1;
}
iret = ReadINIFile("MQQUEUELIST",
"mqSendDynamicQueNm", sSendDynamicQueNm, "main.ini" );
if ( iret != 1 ) { WritePrintLog(
"配置文件中没有找到节点[mqSendDynamicQueNm]\n");
return 1;
}
iret = ReadINIFile("MQMANAGELIST",
"mqQueOpenOptn", smqQueOpenOptn, "main.ini" );
if ( iret != 1 ) { WriteLog("SEND",
"配置文件中没有找到节点[mqQueOpenOptn]\n");
return 1;
}
iret = ReadINIFile("MQMANAGELIST",
"mqQueClsOptn", smqQueClsOptn, "main.ini" );
if ( iret != 1 ) { WriteLog("SEND",
"配置文件中没有找到节点[mqQueClsOptn]\n");
return 1;
}
WritePrintLog( "sQMName=[%s],
sQOutName=[%s],sSendDynamicQueNm=[%s],sQInName=[%s]\n\n", sQMName,
sQOutName,sSendDynamicQueNm, sQInName);
QMName[0] =
0; strncpy(QMName, sQMName,
(size_t)MQ_Q_MGR_NAME_LENGTH);
MQCONN(QMName, &Hcon, &CompCode, &CReason);
if (CompCode == MQCC_FAILED)
{
WritePrintLog("MQCONN ended
with reason code %d\n", CReason);
exit( (int)CReason );
}
strncpy(od.ObjectName, sQOutName,
(size_t)MQ_Q_NAME_LENGTH);
WritePrintLog("target queue is %s\n",
od.ObjectName);
//if (argc > 5)
{
strncpy(od.ObjectQMgrName, QMName, (size_t)
MQ_Q_MGR_NAME_LENGTH);
WritePrintLog("target queue manager is %s\n",
od.ObjectQMgrName);
}
//if (argc > 6)
{
strncpy(od.DynamicQName, sSendDynamicQueNm,
(size_t) MQ_Q_NAME_LENGTH);
WritePrintLog("dynamic queue name is %s\n",
od.DynamicQName);
}
if (0 != strlen(smqQueOpenOptn))
{
O_options = atoi(
smqQueOpenOptn );
WritePrintLog("open options are %d\n", O_options);
}
else
{
O_options =
MQOO_OUTPUT |
MQOO_FAIL_IF_QUIESCING ; }
MQOPEN(Hcon, &od, O_options, &Hobj, &OpenCode, &Reason);
if (Reason != MQRC_NONE)
{
WritePrintLog("MQOPEN ended
with reason code %d\n", Reason);
}
if (OpenCode == MQCC_FAILED)
{
WritePrintLog("unable to open
queue for output\n");
}
CompCode =
OpenCode; fp = stdin;
memcpy(md.Format, MQFMT_STRING,
(size_t)MQ_FORMAT_LENGTH);
pmo.Options = MQPMO_NO_SYNCPOINT
| MQPMO_FAIL_IF_QUIESCING;
if (CompCode != MQCC_FAILED)
{
//if (fgets(buffer,
sizeof(buffer), fp) != NULL)
//{
// messlen =
(MQLONG)strlen(buffer);
//if (buffer[messlen-1] ==
'\n') //{
//
buffer[messlen-1] =
'\0'; // --messlen; //}
// }
//else messlen =
0;
strcpy(buffer,
sOutBuffer);
messlen = strlen(buffer);
char *szOut;
char sTbuffer[65535];
memset(sTbuffer, 0,
sizeof(sTbuffer));
szOut = u2g(buffer);
strcpy(sTbuffer, szOut);
free(szOut);
if (messlen >
0)
{
WritePrintLog("MQPUT===============buffer[%s][%d]\n",
sTbuffer, strlen(sTbuffer));
memcpy(md.MsgId, MQMI_NONE,
sizeof(md.MsgId) );
MQPUT(Hcon, Hobj, &md, &pmo, messlen, buffer, &CompCode, &Reason);
if (Reason !=
MQRC_NONE)
{
WritePrintLog("MQPUT
ended with reason code %d\n", Reason);
}
}
else CompCode =
MQCC_FAILED;
}
if (OpenCode != MQCC_FAILED)
{
if (0 !=
strlen(smqQueClsOptn))
{
C_options =
atoi( smqQueClsOptn );
WritePrintLog("close
options are %d\n", C_options);
}
else
{
C_options =
MQCO_NONE; }
MQCLOSE(Hcon, &Hobj, C_options,
&CompCode, &Reason);
if (Reason != MQRC_NONE)
{
WritePrintLog("MQCLOSE
ended with reason code %d\n", Reason);
}
}
if (CReason != MQRC_ALREADY_CONNECTED)
{
MQDISC(&Hcon, &CompCode, &Reason);
if (Reason != MQRC_NONE)
{
WritePrintLog("MQDISC
ended with reason code %d\n", Reason);
}
}
WritePrintLog("Sample AMQSPUT0 end\n");
return(0);
}