日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

IBM MQ 使用一例

發布時間:2025/3/21 编程问答 68 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IBM MQ 使用一例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
MQ作為一種中間件還是不錯的,可以由一個系統發送一些消息給MQ Server,然后另外一個系統來取得這些消息。比較方便的實現不同系統、不同語言間的通信。

MQ Server可以進行消息的排隊、緩存等。

具體MQ Server的配置我就不介紹了,可以去IBM的網站下載一個試用版試試看。

下面是一個收發的簡單的小例子,具體意思看里面的注釋。

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

/**//*
?*?可以在MQ的資源管理器的某一個隊列上放入測試消息、瀏覽消息等
?*?可以放入多條消息,按先進先出的方式取得
?
*/

public?class?MQTest?{
????
????
private?String?qManager;//?QueueManager名

????
private?MQQueueManager?qMgr;

????
private?MQQueue?qQueue;
????
????String?HOST_NAME;
????
????
int?PORT=0;

????String?Q_NAME;
????
????String?CHANNEL;
????
????
int?CCSID;
????
????String?Msg;
????
????
public?void?init(){
????????????
????????
try?{
????????????HOST_NAME
="192.168.88.169";
????????????PORT
=1414;
????????????qManager
="QM_yfgaochun";
????????????Q_NAME
="QM_NAME1";
????????????CHANNEL
="S_yfgaochun";
????????????CCSID
=1381;?//表示是簡體中文,?CCSID的值在AIX上一般設為1383,如果要支持GBK則設為1386,在WIN上設為1381。
????????????
????????????Msg?
=?"MQ測試發送Gao";
????????????
//System.out.println(Msg);
????????????
????????????MQEnvironment.hostname?
=?HOST_NAME;?//安裝MQ所在的ip?address
????????????MQEnvironment.port=PORT;?//?TCP/IP?port
????????????
????????????MQEnvironment.channel
=CHANNEL;
????????????MQEnvironment.CCSID
=CCSID;
????????????
????????????qMgr?
=?new?MQQueueManager(qManager);
????????????
/**//*????????????try?{
????????????????XADataSource?ds?=?null;
????????????????Connection?con?=?(Connection)qMgr.getJDBCConnection(ds);
????????????}?catch?(SQLException?e)?{
????????????????e.printStackTrace();
????????????}?catch?(Exception?e)?{
????????????????e.printStackTrace();
????????????}
*/

????????????
????????????
//int?qOptioin?=?MQC.MQOO_INQUIRE?|?MQC.MQOO_OUTPUT;?發送時使用
????????????
//int?qOptioin?=?MQC.MQOO_INPUT_AS_Q_DEF?|?MQC.MQOO_OUTPUT;?接收時使用
????????????int?qOptioin?=?MQC.MQOO_INPUT_AS_Q_DEF?|?MQC.MQOO_INQUIRE?|?MQC.MQOO_OUTPUT;

????????????qQueue?
=?qMgr.accessQueue(Q_NAME,?qOptioin);
????????????
????????}
?catch?(MQException?e)?{
????????????System.out
????????????????????.println(
"A?WebSphere?MQ?error?occurred?:?Completion?code?"
????????????????????????????
+?e.completionCode?+?"?Reason?Code?is?"
????????????????????????????
+?e.reasonCode);
????????}
?
????}

????
????
void?finalizer()?{
????????
try?{
????????????qQueue.close();
????????????qMgr.disconnect();
????????}
?catch?(MQException?e)?{
????????????System.out
????????????????????.println(
"A?WebSphere?MQ?error?occurred?:?Completion?code?"
????????????????????????????
+?e.completionCode?+?"?Reason?Code?is?"
????????????????????????????
+?e.reasonCode);
????????}

????}


????
/**//*
?????*?取過一次,下次就沒有了
?????
*/

????
public?void?GetMsg()?{
????????
try?{
????????????MQMessage?retrievedMessage?
=?new?MQMessage();

????????????MQGetMessageOptions?gmo?
=?new?MQGetMessageOptions();
????????????gmo.options?
+=?MQC.MQPMO_SYNCPOINT;

????????????qQueue.get(retrievedMessage,?gmo);

????????????
int?length?=?retrievedMessage.getDataLength();

????????????
byte[]?msg?=?new?byte[length];

????????????retrievedMessage.readFully(msg);

????????????String?sMsg?
=?new?String(msg);
????????????System.out.println(sMsg);

????????}
catch?(RuntimeException?e){?
????????????e.printStackTrace();
????????}
catch?(MQException?e)?{
????????????
if?(e.reasonCode?!=?2033)?//沒有消息
????????????{
????????????????e.printStackTrace();
????????????????System.out
????????????????????????.println(
"A?WebSphere?MQ?error?occurred?:?Completion?code?"
????????????????????????????????
+?e.completionCode
????????????????????????????????
+?"?Reason?Code?is?"
????????????????????????????????
+?e.reasonCode);
????????????}

????????}
?catch?(java.io.IOException?e)?{
????????????System.out
????????????????????.println(
"An?error?occurred?whilst?to?the?message?buffer?"
????????????????????????????
+?e);
????????}

????}

????
????
public?void?SendMsg(byte[]?qByte)?{
????????
try?{
????????????MQMessage?qMsg?
=?new?MQMessage();
????????????qMsg.write(qByte);
????????????MQPutMessageOptions?pmo?
=?new?MQPutMessageOptions();
????????????
????????????qQueue.put(qMsg,?pmo);

????????????System.out.println(
"The?message?is?sent!");
????????????System.out.println(
"\tThe?message?is?"?+?new?String(qByte,"GBK"));
????????}
?catch?(MQException?e)?{
????????????System.out
????????????????????.println(
"A?WebSphere?MQ?error?occurred?:?Completion?code?"
????????????????????????????
+?e.completionCode?+?"?Reason?Code?is?"
????????????????????????????
+?e.reasonCode);
????????}
?catch?(java.io.IOException?e)?{
????????????System.out
????????????????????.println(
"An?error?occurred?whilst?to?the?message?buffer?"
????????????????????????????
+?e);
????????}


????}

????
/**?*//**
?????*?
@param?args
?????
*/

????
public?static?void?main(String[]?args)?{
????????
//?TODO?Auto-generated?method?stub
????????MQTest?mqst?=?new?MQTest();????????
????????mqst.init();
????????
try?{
????????????mqst.SendMsg(mqst.Msg.getBytes(
"GBK"));
????????????
//mqst.GetMsg();
????????}
?catch?(Exception?e)?{
????????????e.printStackTrace();
????????}

????????mqst.finalizer();
????}


}


總結

以上是生活随笔為你收集整理的IBM MQ 使用一例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。