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

服務器之家:專注于服務器技術(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();
    }
  }
}

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产欧美综合一区二区 | 深夜精品高中女学生 | 色天天综合网色鬼综合 | 日韩人成免费网站大片 | 青青草国产精品免费 | 欧美人交性视频在线香蕉 | 羞羞一区二区三区四区片 | 欧洲第一页 | 亚洲国产日韩欧美在线vip1区 | 国产大片视频免费观看 | 国产成人99久久亚洲综合精品 | 亚洲国产99在线精品一区69堂 | 婚前试爱免费观看 | 日韩 欧美 国产 亚洲 中文 | eee在线播放成人免费 | 免费免费啪视频在线观播放 | 黑人破中国女人处 | 日韩欧美国产综合精品 | 波多野结衣 在线播放 | 精品国产自在在线在线观看 | 成人欧美一区二区三区白人 | 千金奴隶在线 | 摸逼小说 | 精品综合久久久久久8888 | 44444色视频在线观看 | 女暴露狂校园裸露小说 | 国产综合成人亚洲区 | 午夜dj影院在线视频观看完整 | 91制片厂制作传媒网站破解 | 国产91精品在线观看 | 8x8x丝袜美女 | 欧美性野久久久久久久久 | 精品午夜久久网成年网 | 欧美精品一区二区三区免费观看 | 亚洲黄色小视频 | 天堂中文在线免费观看 | 国产精品片 | meyd–456佐山爱在线播放 | 欧美日韩人成在线观看 | 欧美成人v视频免费看 | jk制服白丝超短裙流白浆 |