最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2015年10月25日 14:42:27   投稿:hebedich  
WebSphereMQ,也稱MQSeries,以一致的、可靠的和易于管理的方式來連接應(yīng)用程序,并為跨部門、企業(yè)范圍的集成提供了可靠的基礎(chǔ)。通過為重要的消息和事務(wù)提供可靠的、一次且僅一次的傳遞,MQ可以處理復(fù)雜的通信協(xié)議,并動態(tài)地將消息傳遞工作負(fù)載分配給可用的資源。

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

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

1 安裝websphere mq 并啟動

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

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

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

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

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; // 設(shè)置獲取消息選項
 
  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);
    }
  }
 
  /**
   * 初始化服務(wù)器連接信息
   * 
   * @throws Exception
   */
  private void init() throws Exception {
    /* 為客戶機(jī)連接設(shè)置MQEnvironment屬性 */
    MQEnvironment.hostname = host;
    MQEnvironment.channel = channel;
    MQEnvironment.port = port;
 
    /* 連接到隊列管理器 */
    qmgr = new MQQueueManager(qmgrName);
 
    /* 設(shè)置隊列打開選項以輸 */
    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() {
    /* 設(shè)置獲取消息選項 */
    gmo = new MQGetMessageOptions();
    gmo.options = MQConstants.MQGMO_FAIL_IF_QUIESCING;
    gmo.options = gmo.options + MQConstants.MQGMO_SYNCPOINT;
    /* 等待消息 */
    gmo.options = gmo.options + MQConstants.MQGMO_WAIT;
    /* 設(shè)置等待時間限制 */
    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);
              /* 查看是否是最后消息標(biāo)識 */
              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);
            /* 查看是否是最后消息標(biāo)識 */
            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();
    }
  }
}

相關(guān)文章

  • MyBatis-Plus不使用數(shù)據(jù)庫默認(rèn)值的問題及解決

    MyBatis-Plus不使用數(shù)據(jù)庫默認(rèn)值的問題及解決

    這篇文章主要介紹了MyBatis-Plus不使用數(shù)據(jù)庫默認(rèn)值的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • springBoot啟動輸出三行日志控制臺自動停止操作

    springBoot啟動輸出三行日志控制臺自動停止操作

    這篇文章主要介紹了springBoot啟動輸出三行日志控制臺自動停止操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 簡單易懂的MyBatis分庫分表方案分享

    簡單易懂的MyBatis分庫分表方案分享

    這篇文章主要給大家介紹了關(guān)于MyBatis分庫分表方案的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者使用MyBatis具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Spring注解@Value及屬性加載配置文件方式

    Spring注解@Value及屬性加載配置文件方式

    這篇文章主要介紹了Spring注解@Value及屬性加載配置文件方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • MyBatis關(guān)閉一級緩存的兩種方式(分注解和xml兩種方式)

    MyBatis關(guān)閉一級緩存的兩種方式(分注解和xml兩種方式)

    這篇文章主要介紹了MyBatis關(guān)閉一級緩存的兩種方式(分注解和xml兩種方式),mybatis默認(rèn)開啟一級緩存,執(zhí)行2次相同sql,但是第一次查詢sql結(jié)果會加工處理這個時候需要關(guān)閉一級緩存,本文給大家詳細(xì)講解需要的朋友可以參考下
    2022-11-11
  • 關(guān)于bootstrap.yml和bootstrap.properties的優(yōu)先級問題

    關(guān)于bootstrap.yml和bootstrap.properties的優(yōu)先級問題

    這篇文章主要介紹了關(guān)于bootstrap.yml和bootstrap.properties的優(yōu)先級問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java開發(fā)者必備10大數(shù)據(jù)工具和框架

    Java開發(fā)者必備10大數(shù)據(jù)工具和框架

    這篇文章主要為大家詳細(xì)介紹了Java開發(fā)者必備10大數(shù)據(jù)工具和框架,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • SpringMVC文件上傳功能實例解析

    SpringMVC文件上傳功能實例解析

    這篇文章主要介紹了SpringMVC文件上傳功能實例解析,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-03-03
  • SpringBoot3實現(xiàn)webclient的通用方法詳解

    SpringBoot3實現(xiàn)webclient的通用方法詳解

    Spring Boot WebClient 是 Spring Framework 5 中引入的一個新的響應(yīng)式 Web 客戶端,用于異步和響應(yīng)式地與外部服務(wù)進(jìn)行通信,下面我們就來看看SpringBoot3實現(xiàn)webclient的通用方法吧
    2024-04-04
  • springboot配置aop切面日志打印過程解析

    springboot配置aop切面日志打印過程解析

    這篇文章主要介紹了springboot配置aop切面日志打印過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01

最新評論

萍乡市| 罗山县| 诸城市| 潼南县| 巨野县| 霍州市| 霍城县| 思南县| 四子王旗| 体育| 施秉县| 湄潭县| 阿拉尔市| 北票市| 增城市| 桑日县| 台安县| 莆田市| 梁河县| 靖远县| 呼玛县| 金寨县| 四川省| 甘泉县| 大田县| 竹溪县| 神农架林区| 浦江县| 逊克县| 长岭县| 延寿县| 盐城市| 北安市| 迁西县| 恭城| 玛纳斯县| 西宁市| 普格县| 涟源市| 泗水县| 庐江县|