從上周開始看websphere mq,從一無所知到現在終于有所了解,寫了個簡單的傳送消息代碼,
我現在是通過在兩個隊列管理器間設置遠程隊列來進行消息傳遞的,
這兩天寫了一個傳送一百多M文件的程序,
還沒有在遠程機器上測試過,不知道傳送效果如何?
先把傳送消息的代碼貼出來:
/*==============================================================================<br>
?* 版權:? 版權所有 (c) 2004 - 2005<br>
?* 文件包:Message<br>
?* 所含類:<br>
?* 編寫人員:alaxing<br>
?* 創建日期:2004-10-23<br>
?* 功能說明:兩個MQ隊列管理器間進行消息傳送的簡單程序實現<br>
?* 更新記錄:<br>
?*? 日期????????? 作者?????????? 內容<br>
?* =============================================================================<br>
?*
?* ==============================================================================*/
import com.ibm.mq.*;
public class Message {
? private MQQueueManager qMgr;
? private MQQueue mqQueue;
? public Message() {
? }
? /**
?? * 從主機名為chenj1的MQ發送消息到主機名為linxf的MQ上
?? */
? public void putMsg() {
??? try {
????? //源方主機名
????? String hostName = "chenj1";
????? //源方服務器連接通道
????? String channel = "S_chenj1";
????? //源方隊列管理器
????? String qManager = "QM_chenj1";
????? //遠程隊列管理器 定義遠程隊列管理器為QM_linxf ,遠程隊列為file_linxf
????? String qName = "remote_chenj_linxf";
????? MQEnvironment.hostname = hostName;
????? MQEnvironment.channel = channel;
????? MQEnvironment.CCSID = 1381;
????? MQEnvironment.properties.put(MQC.TRANSPORT_PROPERTY,
?????? MQC.TRANSPORT_MQSERIES);
????? MQEnvironment.disableTracing();
????? MQException.log = null;
????? //連接到隊列管理器
????? qMgr = new MQQueueManager(qManager);
????? System.out.println("成功連接QueueManager");
????? int openOptions? =MQC.MQOO_OUTPUT | MQC.MQOO_FAIL_IF_QUIESCING;
????? mqQueue = qMgr.accessQueue(qName, openOptions);
????? MQPutMessageOptions mpmo = new MQPutMessageOptions();
????? MQMessage mqMessage = new MQMessage();
????? mqMessage.writeString(new java.util.Date().toString());
????? mqQueue.put(mqMessage, mpmo);
??? }
??? catch (MQException ex) {
????? System.out.println("Error Code : " + ex.reasonCode);
????? ex.printStackTrace();
??? }
??? catch (java.io.IOException ex) {
????? ex.printStackTrace();
??? }
??? finally {
????? try {
?if (mqQueue != null) {
?? mqQueue.close();
?? System.out.println("成功關閉Queue");
?}
?if (qMgr != null) {
?? qMgr.close();
?? qMgr.disconnect();
?? System.out.println("成功關閉、斷開QueueManager");
?}
????? }
????? catch (MQException ex) {
????? } //end try-catch
??? } //end try-catch
? }
? /**
?? * 從主機名為linxf的MQ上接收消息
?? */
? public void getMsg() {
??? try {
????? //接收方主機名
????? String hostName = "linxf";
????? //接收方服務器連接通道
????? String channel = "S_linxf";
????? //接收方隊列名稱
????? String qManager = "QM_linxf";
????? //接收方接收的本地隊列
????? String qName = "file_linxf";
????? MQEnvironment.properties.put(MQC.TRANSPORT_PROPERTY,
?????? MQC.TRANSPORT_MQSERIES);
????? MQEnvironment.CCSID = 1381;
????? MQEnvironment.hostname = hostName;
????? MQEnvironment.channel = channel;
????? MQQueueManager qMgr = new MQQueueManager(qManager);
????? System.out.println("成功連接QueueManager");
????? int openOptions = MQC.MQOO_INPUT_SHARED | MQC.MQOO_FAIL_IF_QUIESCING;
????? mqQueue = qMgr.accessQueue(qName, openOptions);
????? MQGetMessageOptions gmo = new MQGetMessageOptions();
????? gmo.options = gmo.options + MQC.MQGMO_SYNCPOINT;
????? gmo.options = gmo.options + MQC.MQGMO_WAIT;
????? gmo.options = gmo.options + MQC.MQGMO_FAIL_IF_QUIESCING;
????? gmo.waitInterval = 3000;
????? MQMessage inMsg = new MQMessage();
????? mqQueue.get(inMsg, gmo);
????? String msg = inMsg.readString(inMsg.getMessageLength());
????? System.out.println("this message? is " + msg);
????? qMgr.commit();
??? }
??? catch (MQException ex) {
????? System.out.println("Error Code : " + ex.reasonCode);
????? ex.printStackTrace();
??? }
??? catch (java.io.IOException ex) {
????? ex.printStackTrace();
??? }
??? finally {
????? try {
?if (mqQueue != null) {
?? mqQueue.close();
?? System.out.println("成功關閉Queue");
?}
?if (qMgr != null) {
?? qMgr.close();
?? qMgr.disconnect();
?? System.out.println("成功關閉、斷開qMgr");
?}
????? }
????? catch (MQException ex) {
????? } //end try-catch
??? } //end try-catch
? }
? public static void main(String[] args) {
??? Message msg = new Message();
??? msg.putMsg();
??? msg.getMsg();
? }
}
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=152448