激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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

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

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

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

WebSphereMQ,也稱MQSeries,以一致的、可靠的和易于管理的方式來連接應用程序,并為跨部門、企業(yè)范圍的集成提供了可靠的基礎。通過為重要的消息和事務提供可靠的、一次且僅一次的傳遞,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)){
//     //調用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();
    }
  }
}

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 九九热这里只有精品8 | 九九热视频免费 | 欧美大胆xxxx肉体摄影 | 色女生影院 | 欧洲精品视频在线观看 | 精精国产xxxx视频在线野外 | 又黄又爽免费无遮挡在线观看 | 久久2019中文字幕 | h视频在线观看免费 | 草妞视频| 色偷偷欧美 | 欧美日韩一区,二区,三区,久久精品 | 国产jjizz一区二区三区视频 | 色中色综合 | 日本欧美中文字幕 | 7m视频成人精品分类 | 成人不卡一区二区 | 日本黄色大片免费 | 激情小说另类 | 日韩中文字幕一区二区三区 | 免费看毛片的网站 | 极品一级片 | 国产精品刺激对白麻豆99 | 久久96国产精品久久秘臀 | 在线视频观看一区二区 | 视频一区二区视频 | 午夜在线观看视频网站 | 免费一级a毛片在线播放视 日日草夜夜操 | 久久精品欧美一区二区 | 国产精品二区高清在线 | 黄色小视频在线免费看 | 51国产偷自视频区视频小蝌蚪 | 午夜人体| 亚洲精品欧美二区三区中文字幕 | 九一传媒在线观看 | 性盈盈盈影院 | 亚洲精品欧美二区三区中文字幕 | 日本黄免费 | 国产超碰人人做人人爱 | 欧美wwwcom| 久久影院免费观看 |