使用JAVA代码发送MQ消息
这一节介绍使用JAVA发送文本内容至MQ中
首先新建一个项目,导入必要的包,我记得,必要的包有6个,后来用了maven,我就把本地的删了,测试的时候,可以把jar全部丢进去,在MQ安装目录有个JAVA——lib文件夹,里面就是用到的架包了。
新建类RemoteTest
其他都我就不写了,稍后在文尾给个下载地址供大家参考。
/**
* 初始化
*/
private static void init()
{
Properties prop = new Properties();
InputStream is = RemoteTest.class.getResourceAsStream("/constant.properties");
try
{
prop.load(is);
Q_MANAGER = prop.getProperty("Q_MANAGER").trim();
HOST_NAME = prop.getProperty("HOST_NAME").trim();
PORT = Integer.parseInt(prop.getProperty("PORT").trim());
MQ_NAME = prop.getProperty("MQ_NAME").trim();
CHANNEL = prop.getProperty("CHANNEL").trim();
CCSID = Integer.parseInt(prop.getProperty("CCSID").trim());
MQEnvironment.hostname = HOST_NAME;
MQEnvironment.port = PORT;
MQEnvironment.channel = CHANNEL;
MQEnvironment.CCSID = CCSID;
qMgr = new MQQueueManager(Q_MANAGER);
int qOptioin = MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_INQUIRE | MQC.MQOO_OUTPUT;
qQueue = qMgr.accessQueue(MQ_NAME, qOptioin);
} catch (IOException e)
{
e.printStackTrace();
} catch (MQException e)
{
e.printStackTrace();
}
}
这里的配置文件,大家可以手动改以下,由于我这里是将配置文件写在了properties文件里,大家根据自己喜好选择。
我的配置文件是:
队列管理器名称
Q_MANAGER = Test
主机
HOST_NAME = 10.10.10.223
端口
PORT = 1414
队列
MQ_NAME = QUEUE
通道
CHANNEL = CHANNEL
CCSID = 1383
发送的代码为:
/**
* 发送消息
*/
public static void sendMsg(String msgStr)
{
try
{
init();
MQMessage qMsg = new MQMessage();
qMsg.encoding = CCSID;
qMsg.characterSet = CCSID;
qMsg.writeString(msgStr);
MQPutMessageOptions pmo = new MQPutMessageOptions();
qQueue.put(qMsg, pmo);
System.out.println("发送成功");
} catch (MQException e)
{
System.out.println("发生了一起异常,异常原因:" + e.reasonCode);
} catch (IOException e)
{
System.out.println("发生了一起IO异常:" + e.getMessage());
} finally
{
finalizer();
}
}
/**
* 手动释放
*/
private static void finalizer()
{
try
{
qQueue.close();
qMgr.disconnect();
} catch (MQException e)
{
System.out.println("发生了一起异常,错误代码:" + e.reasonCode);
e.printStackTrace();
}
}
接受的代码为:
/**
* 接收消息
*
* @return
*/
public static String getMsg()
{
final MQMessage revMessage = new MQMessage();
try
{
init();
MQGetMessageOptions gmo = new MQGetMessageOptions();
revMessage.characterSet = CCSID;
revMessage.encoding = CCSID;
gmo.options += MQC.MQPMO_SYNCPOINT;
if (qQueue.getCurrentDepth() <= 0)
{
System.out.println("当前队列深度为0,队列中没有消息。");
return null;
}
qQueue.get(revMessage, gmo);
String revString = revMessage.readStringOfByteLength(revMessage.getMessageLength());
return revString;
} catch (MQException e)
{
if (e.reasonCode == 2033) // 没有消息
{
System.out.println("没收到消息!");
}
} catch (IOException e)
{
e.printStackTrace();
} finally
{
finalizer();
}
return null;
}
自此,就可以通过MQ队列接受和发送消息了。
下载地址:
MQ錯誤代碼合集http://download.csdn.net/detail/u012552275/9781699
MQ的安裝及配置http://download.csdn.net/detail/u012552275/9781644
IBMMQ安裝教程http://download.csdn.net/detail/u012552275/9781643
java的配置文件http://download.csdn.net/detail/u012552275/9815568
MQ工具类http://download.csdn.net/detail/u012552275/9815577
远程测试http://download.csdn.net/detail/u012552275/9815574
其他博客:
WebSphere MQ使用:http://blog.csdn.net/u012552275/article/details/70194285
使用JAVA代码发送MQ消息:http://blog.csdn.net/u012552275/article/details/70194644
JAVA发送接收MQ代码示例:http://blog.csdn.net/u012552275/article/details/70194969