懂MQ的java高手进,被MQ传送文件给难住了~~~~ 不知道什么叫MQ 消息序列?没见lz帖出什么c语言啊c socket 略有经验 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 索引消息格式vc例子: MQOD od = {MQOD_DEFAULT}; /* Object Descriptor */ MQMD md = {MQMD_DEFAULT}; /* Message Descriptor */ MQPMO pmo = {MQPMO_DEFAULT}; /* put message options */ MQGMO gmo = {MQGMO_DEFAULT}; /* get message options */ MQRMHX refx = {{MQRMH_DEFAULT}}; /* reference message */ /** note, sample uses defaults where it can **/ MQHCONN Hcon; /* connection handle */ MQHOBJ Hobj = MQHO_UNUSABLE_HOBJ; /* object handle */ MQLONG CompCode ; /* completion code */ //MQLONG OpenCompCode; /* MQOPEN completion code */ MQLONG ConnCode ; /* MQCONN completion code */ //int rc = 0; /* Return code */ MQLONG Reason; /* reason code */ MQLONG CReason; /* reason code for MQCONN */ //MQLONG oo; /* MQOPEN options */ MQLONG co = MQCO_NONE; /* MQCLOSE options */ MQLONG DataLength; /* Length of report message */ MQLONG WaitInterval = 15 ; /* Wait interval */ MQLONG QMgrCCSID; /* QMgr CodedCharSetId */ PMQRMH pMQRMH; /* -> MQRMH structure */ PMQXQH pMQXQH; /* -> MQXQH structure */ char QMName[MQ_Q_MGR_NAME_LENGTH+1] = "ICBC" ; /* local queue manager name */ char DestQName[MQ_Q_NAME_LENGTH+1] = "QSEND_FL.TELECOM" ; /* destination queue name */// char DestQMName[MQ_Q_MGR_NAME_LENGTH+1] = "ZHTELECOM"; /* destination qmgr name */ char SourceFileName[MAX_FILENAME_LENGTH+1] = "TK02200309.15" ; /* source file name */ char TargetFileName[MAX_FILENAME_LENGTH+1] = "TK02200309.15" ; /* target file name */ char ObjectType[sizeof(refx.ref.ObjectType)]; /* Object type */ char Buffer[sizeof(MQXQH)+MAX_MQRMH_LENGTH]; strcpy(QMName, sMQManager); strcpy(DestQName, sMQSendQueue); strcpy(SourceFileName, sFileName); strcpy(TargetFileName, sFileName); MQCONN( QMName /* queue manager */ ,&Hcon /* connection handle */ ,&ConnCode /* completion code */ ,&CReason ); /* reason code */ CompCode = ConnCode; if (CompCode == MQCC_FAILED) { cout << "connect MQManger failed!" << endl; return -1; } rc = prmGetQMgrCCSID(QMName ,Hcon ,&QMgrCCSID ); if (rc != 0) { cout << "Get QMgrCCSID failed!" << endl; goto EXIT; } memset(ObjectType,' ',sizeof(ObjectType)); memcpy(ObjectType, "FLATFILE", sizeof("FLATFILE") - 1 ); refx.ref.StrucLength = sizeof(refx); refx.ref.Encoding = MQENC_NATIVE; refx.ref.CodedCharSetId = QMgrCCSID; memcpy(refx.ref.Format,MQFMT_STRING ,(size_t)MQ_FORMAT_LENGTH); refx.ref.Flags = MQRMHF_LAST; memcpy(refx.ref.ObjectType,ObjectType, sizeof(refx.ref.ObjectType)); memset(refx.SrcName ,' ' ,sizeof(refx.SrcName)+sizeof(refx.DestName)); memcpy(refx.SrcName ,SourceFileName ,strlen(SourceFileName) ); memcpy(refx.DestName ,TargetFileName ,strlen(TargetFileName) ); refx.ref.SrcNameLength = strlen(SourceFileName); refx.ref.SrcNameOffset = offsetof(MQRMHX,SrcName); refx.ref.DestNameLength = strlen(TargetFileName); refx.ref.DestNameOffset = offsetof(MQRMHX,DestName); memcpy(md.ReplyToQ ,"QUEUE_REPORT" , strlen( "QUEUE_REPORT" ) ); strncpy(od.ObjectName ,DestQName ,sizeof(od.ObjectName) ); /* strncpy(od.ObjectQMgrName , "ZHTELECOM" , strlen( "ZHTELECOM" ) ); strncpy(md.ReplyToQMgr , "TEST" , strlen( "TEST" ) ); */ md.Report = MQRO_COA_WITH_FULL_DATA + MQRO_EXCEPTION_WITH_FULL_DATA; pmo.Options = MQPMO_FAIL_IF_QUIESCING; memcpy(md.Format,MQFMT_REF_MSG_HEADER ,(size_t)MQ_FORMAT_LENGTH);// md.Report = MQRO_COA + MQRO_EXCEPTION; MQPUT1(Hcon, /* connection handle */ &od, /* object descriptor for queue */ &md, /* message descriptor */ &pmo, /* options */ sizeof(refx), /* buffer length */ &refx, /* buffer */ &CompCode, /* MQPUT1 completion code */ &Reason); /* reason code */ if (Reason != MQRC_NONE) { cout << "MQPUT1 failed! " << endl; rc = -1; goto EXIT; } else cout << "发送索引消息成功!" << endl; ----------------------- MQCONN( QMName /* queue manager */ ,&Hcon /* connection handle */ ,&ConnCode /* completion code */ ,&CReason ); /* reason code 结构应该不是关键,比较想看下这个方法的代码,毕竟coon是在这里做的(我猜)然后是:rc = prmGetQMgrCCSID(QMName ,Hcon ,&QMgrCCSID ); 在然后这个应该是传送的方法吧:MQPUT1(Hcon, /* connection handle */ &od, /* object descriptor for queue */ &md, /* message descriptor */ &pmo, /* options */ sizeof(refx), /* buffer length */ &refx, /* buffer */ &CompCode, /* MQPUT1 completion code */ &Reason); /* reason code */ 这几个函数满关键的,可以的话贴下吧 研磨设计模式 之 观察者模式(Observer) ——跟着cc学设计系列 Spring注入问题 基于lucene3.0的中文分词系统 java 解压ZIP文件 一个简单的ejb程序,请帮帮忙看看那里错了,谢谢拉 跪求EJB问题~ 请教:用java进行des加密中的密钥问题 ★ 请教一个CMR的简单问题 ★ 请问在程序中(不包含jsp和servlet)得到weblogic 服务器的路径?? 服务器线程问题 jsf+css真是噩梦 Hibernate3.2是否和MYSQL5.1不兼容?要多少分给多少分,如果解决了问题
MQOD od = {MQOD_DEFAULT}; /* Object Descriptor */
MQMD md = {MQMD_DEFAULT}; /* Message Descriptor */
MQPMO pmo = {MQPMO_DEFAULT}; /* put message options */
MQGMO gmo = {MQGMO_DEFAULT}; /* get message options */
MQRMHX refx = {{MQRMH_DEFAULT}}; /* reference message */
/** note, sample uses defaults where it can **/ MQHCONN Hcon; /* connection handle */
MQHOBJ Hobj = MQHO_UNUSABLE_HOBJ;
/* object handle */
MQLONG CompCode ; /* completion code */
//MQLONG OpenCompCode; /* MQOPEN completion code */
MQLONG ConnCode ; /* MQCONN completion code */
//int rc = 0; /* Return code */
MQLONG Reason; /* reason code */
MQLONG CReason; /* reason code for MQCONN */
//MQLONG oo; /* MQOPEN options */
MQLONG co = MQCO_NONE; /* MQCLOSE options */
MQLONG DataLength; /* Length of report message */
MQLONG WaitInterval = 15 ;
/* Wait interval */
MQLONG QMgrCCSID; /* QMgr CodedCharSetId */
PMQRMH pMQRMH; /* -> MQRMH structure */
PMQXQH pMQXQH; /* -> MQXQH structure */ char QMName[MQ_Q_MGR_NAME_LENGTH+1] = "ICBC" ;
/* local queue manager name */
char DestQName[MQ_Q_NAME_LENGTH+1] = "QSEND_FL.TELECOM" ;
/* destination queue name */
// char DestQMName[MQ_Q_MGR_NAME_LENGTH+1] = "ZHTELECOM";
/* destination qmgr name */
char SourceFileName[MAX_FILENAME_LENGTH+1] = "TK02200309.15" ;
/* source file name */
char TargetFileName[MAX_FILENAME_LENGTH+1] = "TK02200309.15" ;
/* target file name */
char ObjectType[sizeof(refx.ref.ObjectType)];
/* Object type */
char Buffer[sizeof(MQXQH)+MAX_MQRMH_LENGTH]; strcpy(QMName, sMQManager);
strcpy(DestQName, sMQSendQueue);
strcpy(SourceFileName, sFileName);
strcpy(TargetFileName, sFileName); MQCONN( QMName /* queue manager */
,&Hcon /* connection handle */
,&ConnCode /* completion code */
,&CReason ); /* reason code */ CompCode = ConnCode; if (CompCode == MQCC_FAILED)
{
cout << "connect MQManger failed!" << endl;
return -1;
} rc = prmGetQMgrCCSID(QMName
,Hcon
,&QMgrCCSID
); if (rc != 0)
{
cout << "Get QMgrCCSID failed!" << endl;
goto EXIT;
} memset(ObjectType,' ',sizeof(ObjectType));
memcpy(ObjectType, "FLATFILE", sizeof("FLATFILE") - 1 ); refx.ref.StrucLength = sizeof(refx);
refx.ref.Encoding = MQENC_NATIVE;
refx.ref.CodedCharSetId = QMgrCCSID;
memcpy(refx.ref.Format,MQFMT_STRING
,(size_t)MQ_FORMAT_LENGTH);
refx.ref.Flags = MQRMHF_LAST;
memcpy(refx.ref.ObjectType,ObjectType,
sizeof(refx.ref.ObjectType)); memset(refx.SrcName
,' '
,sizeof(refx.SrcName)+sizeof(refx.DestName)); memcpy(refx.SrcName
,SourceFileName
,strlen(SourceFileName)
);
memcpy(refx.DestName
,TargetFileName
,strlen(TargetFileName)
); refx.ref.SrcNameLength = strlen(SourceFileName);
refx.ref.SrcNameOffset = offsetof(MQRMHX,SrcName); refx.ref.DestNameLength = strlen(TargetFileName);
refx.ref.DestNameOffset = offsetof(MQRMHX,DestName); memcpy(md.ReplyToQ
,"QUEUE_REPORT"
, strlen( "QUEUE_REPORT" )
);
strncpy(od.ObjectName
,DestQName
,sizeof(od.ObjectName)
);
/* strncpy(od.ObjectQMgrName
, "ZHTELECOM"
, strlen( "ZHTELECOM" )
);
strncpy(md.ReplyToQMgr
, "TEST"
, strlen( "TEST" )
); */
md.Report = MQRO_COA_WITH_FULL_DATA + MQRO_EXCEPTION_WITH_FULL_DATA;
pmo.Options = MQPMO_FAIL_IF_QUIESCING;
memcpy(md.Format,MQFMT_REF_MSG_HEADER
,(size_t)MQ_FORMAT_LENGTH);
// md.Report = MQRO_COA + MQRO_EXCEPTION; MQPUT1(Hcon, /* connection handle */
&od, /* object descriptor for queue */
&md, /* message descriptor */
&pmo, /* options */
sizeof(refx), /* buffer length */
&refx, /* buffer */
&CompCode, /* MQPUT1 completion code */
&Reason); /* reason code */ if (Reason != MQRC_NONE)
{
cout << "MQPUT1 failed! " << endl;
rc = -1;
goto EXIT;
}
else cout << "发送索引消息成功!" << endl;
-----------------------
,&Hcon /* connection handle */
,&ConnCode /* completion code */
,&CReason ); /* reason code 结构应该不是关键,比较想看下这个方法的代码,毕竟coon是在这里做的(我猜)然后是:rc = prmGetQMgrCCSID(QMName
,Hcon
,&QMgrCCSID
); 在然后这个应该是传送的方法吧:MQPUT1(Hcon, /* connection handle */
&od, /* object descriptor for queue */
&md, /* message descriptor */
&pmo, /* options */
sizeof(refx), /* buffer length */
&refx, /* buffer */
&CompCode, /* MQPUT1 completion code */
&Reason); /* reason code */ 这几个函数满关键的,可以的话贴下吧