WebSphere MQ For JAVA编程实例----实现MQ trigger---样例

MQTrigger.java源码如下:


import java.io.*;
import java.lang.*;
import com.ibm.mq.*;

class MQTrigger
{

private String structId;
private String version;
private String qName;
private String processName;
private String triggerData;
private String applType;
private String applId;
private String envData;
private String userData;
private String qMgrName;

/******************************************************/
/* Constructor to parse the MQTMC2 stucture and set */
/* the class attributes. */
/* Values derived from field definitions given for */
/* MQTMC2 in the WebSphere Application Programming */
/* Reference. */
/******************************************************/
public MQTrigger(String tmcStruct) throws StringIndexOutOfBoundsException
{

structId = tmcStruct.substring(0,3).trim();
version = tmcStruct.substring(4,8).trim();
qName = tmcStruct.substring(8,55).trim();
processName = tmcStruct.substring(56,103).trim();
triggerData = tmcStruct.substring(104,167).trim();
applType = tmcStruct.substring(168,171).trim();
applId = tmcStruct.substring(172,427).trim();
envData = tmcStruct.substring(428,555).trim();
userData = tmcStruct.substring(556,683).trim();
qMgrName = tmcStruct.substring(684,730).trim();

}

public String getStructId()
{
return(structId);
}

public String getVersion()
{
return(version);
}

public String getQueueName()
{
return(qName);
}

public String getProcessName()
{
return(processName);
}

public String getTriggerData()
{
return(triggerData);
}

public String getApplicationType()
{
return(applType);
}

public String getApplicationId()
{
return(applId);
}

public String getEnvironmentData()
{
return(envData);
}

public String getUserData()
{
return(userData);
}

public String getQueueManagerName()
{
return(qMgrName);
}

}

JavaTrigger.java源码如下:

import java.io.IOException;

import com.ibm.mq.MQC;
import com.ibm.mq.MQException;
import com.ibm.mq.MQGetMessageOptions;
import com.ibm.mq.MQMessage;
import com.ibm.mq.MQQueue;
import com.ibm.mq.MQQueueManager;

public class JavaTrigger
{


private MQQueueManager qMgr;

public static void main (String args[]) throws IOException
{
if (args.length < 1)
{
System.out.println("This must be a triggered application");
}
else
{
JavaTrigger jt = new JavaTrigger();
jt.start(args);
}
System.exit(0);
}


public void start(String args[])
{
try
{

MQException.log = null;

/******************************************************/
/* Create a MQTrigger class object to read the MQTMC2 */
/* structure into the correct attribute. */
/******************************************************/
MQTrigger tmc = new MQTrigger(args[0]);

/******************************************************/
/* Connect to the queue manager identified by the */
/* trigger. */
/******************************************************/

qMgr = new MQQueueManager(tmc.getQueueManagerName());

/******************************************************/
/* Open the queue identified by the trigger. */
/******************************************************/

int openOptions = MQC.MQOO_INPUT_AS_Q_DEF
| MQC.MQOO_FAIL_IF_QUIESCING;

MQQueue triggerQueue = qMgr.accessQueue(tmc.getQueueName(),
openOptions,
null, null, null);

/******************************************************/
/* Set up our options to get the first message */
/* Wait 5 seconds to be cetain all messages are */
/* processed. */
/******************************************************/
MQGetMessageOptions gmo = new MQGetMessageOptions();
gmo.options = MQC.MQGMO_WAIT | MQC.MQGMO_CONVERT;
gmo.waitInterval = 5000;

MQMessage triggerMessage = new MQMessage();

/*****************************************************/
/* Read each message from the queue until there are */
/* no more messages to get. */
/*****************************************************/
long rc = 0;
do
{
rc = 0;
try
{
/***********************************************/
/* Set the messageId and correlationId to none */
/* to get all messages with no message */
/* selection. */
/***********************************************/
triggerMessage.clearMessage();
triggerMessage.correlationId = MQC.MQCI_NONE;
triggerMessage.messageId = MQC.MQMI_NONE;

triggerQueue.get(triggerMessage, gmo);
String msg = triggerMessage.readString(triggerMessage.getMessageLength());

/***********************************************/
/* Insert business logic for the message here. */
/* For this sample, echo the first 20 */
/* characters of the message. */
/***********************************************/
if (msg.length() > 20)
{
System.out.println("Message: " + msg.substring(0,20));
}
else
{
System.out.println("Message: " + msg);
}


}
catch (MQException mqEx)
{
rc = mqEx.reasonCode;
if (rc != MQException.MQRC_NO_MSG_AVAILABLE)
{
System.out.println(" PUT Message failed with rc = "
+ rc);
}
}
catch (Exception ex)
{
System.out.println("Generic exception: " + ex);
rc = 1;
}

} while (rc == 0);


/**********************************************************/
/* Cleanup MQ resources prior to exiting. */
/**********************************************************/
triggerQueue.close();
qMgr.disconnect();
}

catch (MQException mqEx)
{
System.out.println("MQ failed with completion code = "
+ mqEx.completionCode
+ " and reason code = " + mqEx.reasonCode);
}
}

}

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/67233/viewspace-916708/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/67233/viewspace-916708/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值