一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術(shù)及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - java結(jié)合WebSphere MQ實現(xiàn)接收隊列文件功能

java結(jié)合WebSphere MQ實現(xiàn)接收隊列文件功能

2020-01-12 14:41hebedich JAVA教程

WebSphereMQ,也稱MQSeries,以一致的、可靠的和易于管理的方式來連接應用程序,并為跨部門、企業(yè)范圍的集成提供了可靠的基礎(chǔ)。通過為重要的消息和事務提供可靠的、一次且僅一次的傳遞,MQ可以處理復雜的通信協(xié)議,并動態(tài)地將

首先我們先來簡單介紹下websphere mq以及安裝使用簡介

websphere mq  : 用于傳輸信息 具有跨平臺的功能。

1 安裝websphere mq 并啟動

2 websphere mq 建立 queue Manager (如:MQSI_SAMPLE_QM)

3 建立queue 類型選擇 Local類型 的 (如lq  )

4 建立channels 類型選擇Server Connection (如BridgeChannel)

接下來,我們來看實例代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
MQFileReceiver.java
 
package com.mq.dpca.file;
 
import java.io.File;
import java.io.FileOutputStream;
 
import com.ibm.mq.MQEnvironment;
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;
import com.ibm.mq.constants.MQConstants;
import com.mq.dpca.msg.MQConfig;
import com.mq.dpca.util.ReadCmdLine;
import com.mq.dpca.util.RenameUtil;
 
/**
 *
 * MQ分組接收文件功能
 * 主動輪詢
 */
public class MQFileReceiver {
  private MQQueueManager qmgr; // 連接到隊列管理器
 
  private MQQueue inQueue; // 傳輸隊列
 
  private String queueName = ""; // 隊列名稱
 
  private String host = ""; //
 
  private int port = 1414; // 偵聽器的端口號
 
  private String channel = ""; // 通道名稱
 
  private String qmgrName = ""; // 隊列管理器
 
  private MQMessage inMsg; // 創(chuàng)建消息緩沖
 
  private MQGetMessageOptions gmo; // 設置獲取消息選項
 
  private static String fileName = null; // 接收隊列上的消息并存入文件
 
  private int ccsid = 0;
 
  private static String file_dir = null;
 
  /**
   * 程序的入口
   *
   * @param args
   */
  public static void main(String args[]) {
    MQFileReceiver mfs = new MQFileReceiver();
    //初始化連接
    mfs.initproperty();
    //接收文件
    mfs.runGoupReceiver();
    //獲取shell腳本名
//   String shellname = MQConfig.getValueByKey(fileName);
//   if(shellname!=null&&!"".equals(shellname)){
//     //調(diào)用shell
//     ReadCmdLine.callShell(shellname);
//   }else{
//     System.out.println("have no shell name,Only receive files.");
//   }
 
  }
 
  public void runGoupReceiver() {
    try {
      init();
      getGroupMessages();
      qmgr.commit();
      System.out.println("\n Messages successfully Receive ");
    } catch (MQException mqe) {
      mqe.printStackTrace();
      try {
        System.out.println("\n Backing out Transaction ");
        qmgr.backout();
        System.exit(2);
      } catch (Exception e) {
        e.printStackTrace();
        System.exit(2);
      }
    } catch (Exception e) {
      e.printStackTrace();
      System.exit(2);
    }
  }
 
  /**
   * 初始化服務器連接信息
   *
   * @throws Exception
   */
  private void init() throws Exception {
    /* 為客戶機連接設置MQEnvironment屬性 */
    MQEnvironment.hostname = host;
    MQEnvironment.channel = channel;
    MQEnvironment.port = port;
 
    /* 連接到隊列管理器 */
    qmgr = new MQQueueManager(qmgrName);
 
    /* 設置隊列打開選項以輸 */
    int opnOptn = MQConstants.MQOO_INPUT_AS_Q_DEF
        | MQConstants.MQOO_FAIL_IF_QUIESCING;
 
    /* 打開隊列以輸 */
    inQueue = qmgr.accessQueue(queueName, opnOptn, null, null, null);
  }
 
  /**
   * 接受文件的主函數(shù)
   *
   * @throws Exception
   */
  public void getGroupMessages() {
    /* 設置獲取消息選項 */
    gmo = new MQGetMessageOptions();
    gmo.options = MQConstants.MQGMO_FAIL_IF_QUIESCING;
    gmo.options = gmo.options + MQConstants.MQGMO_SYNCPOINT;
    /* 等待消息 */
    gmo.options = gmo.options + MQConstants.MQGMO_WAIT;
    /* 設置等待時間限制 */
    gmo.waitInterval = 5000;
    /* 只獲取消息 */
    gmo.options = gmo.options + MQConstants.MQGMO_ALL_MSGS_AVAILABLE;
    /* 以輯順序獲取消息 */
    gmo.options = gmo.options + MQConstants.MQGMO_LOGICAL_ORDER;
    gmo.matchOptions = MQConstants.MQMO_MATCH_GROUP_ID;
    /* 創(chuàng)建消息緩沖 */
    inMsg = new MQMessage();
    try {
      FileOutputStream fos = null;
      /* 處理組消息 */
      while (true) {
        try {
          inQueue.get(inMsg, gmo);
          if (fos == null) {
            try {
              fileName = inMsg.getStringProperty("fileName");
              String fileName_full = null;
              fileName_full = file_dir + RenameUtil.rename(fileName);
              fos = new FileOutputStream(new File(fileName_full));
              int msgLength = inMsg.getMessageLength();
              byte[] buffer = new byte[msgLength];
              inMsg.readFully(buffer);
              fos.write(buffer, 0, msgLength);
              /* 查看是否是最后消息標識 */
              char x = gmo.groupStatus;
              if (x == MQConstants.MQGS_LAST_MSG_IN_GROUP) {
                System.out.println("Last Msg in Group");
                break;
              }
              inMsg.clearMessage();
 
            } catch (Exception e) {
              System.out
                  .println("Receiver the message without property,do nothing!");
              inMsg.clearMessage();
            }
          } else {
            int msgLength = inMsg.getMessageLength();
            byte[] buffer = new byte[msgLength];
            inMsg.readFully(buffer);
            fos.write(buffer, 0, msgLength);
            /* 查看是否是最后消息標識 */
            char x = gmo.groupStatus;
            if (x == MQConstants.MQGS_LAST_MSG_IN_GROUP) {
              System.out.println("Last Msg in Group");
              break;
            }
            inMsg.clearMessage();
          }
        } catch (Exception e) {
          char x = gmo.groupStatus;
          if (x == MQConstants.MQGS_LAST_MSG_IN_GROUP) {
            System.out.println("Last Msg in Group");
          }
          break;
        }
      }
      if (fos != null)
        fos.close();
    } catch (Exception e) {
      System.out.println(e.getMessage());
    }
  }
 
  public void initproperty() {
    MQConfig config = new MQConfig().getInstance();
    if (config.getMQ_MANAGER() != null) {
      qmgrName = config.getMQ_MANAGER();
      queueName = config.getMQ_QUEUE_NAME();
      channel = config.getMQ_CHANNEL();
      host = config.getMQ_HOST_NAME();
      port = Integer.valueOf(config.getMQ_PROT());
      ccsid = Integer.valueOf(config.getMQ_CCSID());
      file_dir = config.getFILE_DIR();
    }
  }
}

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 污黄在线观看 | 天堂素人在线 | 母乳在线播放 | 无限好资源第一片免费韩国 | 国产香蕉视频在线观看 | 韩日一区二区三区 | 欧美精品日韩 | 无码国产成人777爽死 | 日本一区二区视频免费播放 | 嫩草影院地址一地址二 | 国产视频一区二 | 爱色v | 天海翼黄色三级 | 999精品视频这里只有精品 | 欧美黑人一级片 | 免费精品99久久国产综合精品 | 亚洲视频国产精品 | 日本三级免费观看 | 日产精品卡一卡2卡三卡乱码工厂 | 国产精品午夜剧场 | 女学生被老师调教在教室 | 国产视频自拍一区 | 天天操精品| 午夜在线播放免费人成无 | 日韩视频在线精品视频免费观看 | 天堂网站天堂小说 | 国自产精品手机在线视频 | 久久不卡免费视频 | 国产精品性视频免费播放 | 国产精品午夜久久 | 欧美视频一 | 亚洲视频在线免费 | 天天草b | 亚洲天堂精品在线观看 | 国产精品怡红院永久免费 | 国产成人综合一区人人 | 精品国产人妻国语 | 97精品久久天干天天蜜 | 爽爽窝窝午夜精品一区二区 | 激情影院网站 | 久久亚洲免费视频 |