MQ發送文件到隊列的Java代碼

hwl0420 8年前發布 | 3K 次閱讀 Java

MQ發送文件到隊列
</div>

 

mqfilesend.java          

package com.mq.dpca.file;

import java.io.File;
import java.io.FileInputStream;

import com.ibm.mq.MQEnvironment;
import com.ibm.mq.MQException;
import com.ibm.mq.MQMessage;
import com.ibm.mq.MQPutMessageOptions;
import com.ibm.mq.MQQueue;
import com.ibm.mq.MQQueueManager;
import com.ibm.mq.constants.MQConstants;

/**
 * 
 * MQ發送文件功能
 * 
 */
public class mqfilesend {
    final int BUFFER_LEN = 1024 * 1024; // 定義發送文件的大小

    private MQQueueManager qmgr; // 連接到隊列管理器

    private MQQueue outQueue; // 傳輸隊列

    private String queueName = "aa"; // 隊列名稱

    private String host = "127.0.0.1"; // 隊列名稱

    private int port = 1414; // 偵聽器的端口號

    private String channel = "SYSTEM.BKR.CONFIG"; // 通道名稱

    private String qmgrName = "mm"; // 隊列管理器

    private MQMessage outMsg; // 創建消息緩沖

    private MQPutMessageOptions pmo; // 設置獲取消息選項

    private String fileName = "D:\\log.txt"; // 要往隊列上發的文件

    /**
     * 初始化服務器連接信息
     * 
     * @throws Exception
     */
    private void init() throws Exception {
        /** 設置MQEnvironment 屬性以便客戶機連接 */
        MQEnvironment.hostname = host;
        MQEnvironment.channel = channel;
        MQEnvironment.port = port;
        // MQEnvironment.properties.put(MQC.TRANSPORT_PROPERTY,MQC.TRANSPORT_WEBSPHERE
        // MQ);

        /* 連接到隊列管理器 */
        qmgr = new MQQueueManager(qmgrName);

        /* 設置隊列打開選項以便輸出 */
        int opnOptn = MQConstants.MQOO_OUTPUT
                | MQConstants.MQOO_FAIL_IF_QUIESCING;
        // int opnOptn = MQConstants.MQOO_OUTPUT ;

        outQueue = qmgr.accessQueue(queueName, opnOptn, null, null, null);
    }

    /**
     * 發送的主程序
     * 
     * @throws Exception
     */
    public void sendMessages() throws Exception {
        /* 設置放置消息選項 */
        pmo = new MQPutMessageOptions();
        outMsg = new MQMessage();
        FileInputStream fis = new FileInputStream(new File(fileName));
        byte buffer[] = new byte[BUFFER_LEN];
        int count = 0;
        while (true) {
            count = fis.read(buffer, 0, BUFFER_LEN);
            if (count == -1) {
                break;
            }
            outMsg.write(buffer);

            if (count < BUFFER_LEN) {
                System.out.println("aaa");
            }
            outQueue.put(outMsg, pmo);
            outMsg.clearMessage();
        }
        fis.close();
    }

    public void runGoupSender() {
        try {
            init();
            sendMessages();
            qmgr.commit();
            System.out.println("\n Messages successfully Send ");
        } 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);
        }
    }

    /**
     * 程序的入口
     * 
     * @param args
     */
    public static void main(String args[]) {
        MQFileSender mfs = new MQFileSender();
        int i = 0;
        while (true) {
            i++;
            System.out.println("消息記錄" + i);
            mfs.runGoupSender();
            if (i == 1) {
                break;
            }
        }
    }
}

MQConfig.java ~ 6KB     (6)    

package com.mq.dpca.msg;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import java.util.PropertyResourceBundle;
import java.util.ResourceBundle;

import com.mq.dpca.util.RenameUtil;

/**
 * MQ訪問配置文件各參數的獲取
 * 
 */
public class MQConfig {
    // MQ配置及server配置文件路徑
    private static final String ACTIONPATH = "config.properties";
    private static MQConfig instance = null;

    private String MQ_MANAGER = null;
    private String MQ_HOST_NAME = null;
    private String MQ_CHANNEL = null;
    private String MQ_QUEUE_NAME = null;
    private String MQ_PROT = null;
    private String MQ_CCSID = null;
    private String MQ_QUEUE_SUB = null;
    private String FILE_DIR = null;

    public String getFILE_DIR() {
        return FILE_DIR;
    }

    public void setFILE_DIR(String fILE_DIR) {
        FILE_DIR = fILE_DIR;
    }

    public String getMQ_MANAGER() {
        return MQ_MANAGER;
    }

    public void setMQ_MANAGER(String mq_manager) {
        MQ_MANAGER = mq_manager;
    }

    public String getMQ_HOST_NAME() {
        return MQ_HOST_NAME;
    }

    public void setMQ_HOST_NAME(String mq_host_name) {
        MQ_HOST_NAME = mq_host_name;
    }

    public String getMQ_CHANNEL() {
        return MQ_CHANNEL;
    }

    public void setMQ_CHANNEL(String mq_channel) {
        MQ_CHANNEL = mq_channel;
    }

    public String getMQ_QUEUE_NAME() {
        return MQ_QUEUE_NAME;
    }

    public void setMQ_QUEUE_NAME(String mq_queue_name) {
        MQ_QUEUE_NAME = mq_queue_name;
    }

    public String getMQ_PROT() {
        return MQ_PROT;
    }

    public void setMQ_PROT(String mq_prot) {
        MQ_PROT = mq_prot;
    }

    public String getMQ_CCSID() {
        return MQ_CCSID;
    }

    public void setMQ_CCSID(String mq_ccsid) {
        MQ_CCSID = mq_ccsid;
    }

    public static MQConfig getInstance() {
        if (instance == null) {
            instance = new MQConfig().getNewDbConfig();
        }
        return instance;
    }

    public static ResourceBundle getCFG(){
        String cfgPath = "";
        InputStream in = null;
        ResourceBundle pathCfg = null;
        ResourceBundle mqCfg = null;
        pathCfg = PropertyResourceBundle.getBundle("config");
        cfgPath = RenameUtil.getParameter(pathCfg, "mqcfgPath");
        try {
            in = new BufferedInputStream(new FileInputStream(cfgPath));
            mqCfg = new PropertyResourceBundle(in);
            return mqCfg;
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }catch (IOException e) {
            e.printStackTrace();
        }
        return mqCfg;
    }

    public static MQConfig getNewDbConfig() {

        MQConfig dc = new MQConfig();
        Properties prop = new Properties();
        String path = null;
        InputStream fis = null;

        try {
            fis = MQConfig.class.getClassLoader().getResourceAsStream(
                    "config.properties");
            // fis = new FileInputStream(new File(path + ACTIONPATH));
            prop.load(fis);
            dc.MQ_CCSID = prop.getProperty("MQ_CCSID");
            dc.MQ_CHANNEL = prop.getProperty("MQ_CHANNEL");
            dc.MQ_HOST_NAME = prop.getProperty("MQ_HOST_NAME");
            dc.MQ_MANAGER = prop.getProperty("MQ_MANAGER");
            dc.MQ_PROT = prop.getProperty("MQ_PROT");
            dc.MQ_QUEUE_NAME = prop.getProperty("MQ_QUEUE_NAME");
            dc.MQ_QUEUE_SUB = prop.getProperty("MQ_QUEUE_SUB");
            dc.FILE_DIR = prop.getProperty("FILE_DIR");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return dc;
    }

    public static MQConfig MqConfig() {

        MQConfig dc = new MQConfig();
        ResourceBundle rb =  getCFG();
        try {
            // fis = new FileInputStream(new File(path + ACTIONPATH));
            dc.MQ_CCSID = RenameUtil.getParameter(rb,"MQ_CCSID");
            dc.MQ_CHANNEL = RenameUtil.getParameter(rb,"MQ_CHANNEL");
            dc.MQ_HOST_NAME = RenameUtil.getParameter(rb,"MQ_HOST_NAME");
            dc.MQ_MANAGER = RenameUtil.getParameter(rb,"MQ_MANAGER");
            dc.MQ_PROT = RenameUtil.getParameter(rb,"MQ_PROT");
            dc.MQ_QUEUE_NAME = RenameUtil.getParameter(rb,"MQ_QUEUE_NAME");
            dc.MQ_QUEUE_SUB = RenameUtil.getParameter(rb,"MQ_QUEUE_SUB");
            dc.FILE_DIR = RenameUtil.getParameter(rb,"FILE_DIR");
        } catch (Exception e) {
            e.printStackTrace();
        }
        return dc;
    }

    public static MQConfig getNewDbConfigFromKey(String key) {
        MQConfig dc = null;
        Properties prop = new Properties();
        String path = null;
        InputStream fis = null;
        try {
            fis = MQConfig.class.getClassLoader().getResourceAsStream(
                    "config.properties");
            // fis = new FileInputStream(new File(path + ACTIONPATH));
            prop.load(fis);
            dc = new MQConfig();
            dc.MQ_MANAGER = prop.getProperty(key + "_MQ_MANAGER");
            dc.MQ_CCSID = prop.getProperty(key + "_MQ_CCSID");
            dc.MQ_CHANNEL = prop.getProperty(key + "_MQ_CHANNEL");
            dc.MQ_HOST_NAME = prop.getProperty(key + "_MQ_HOST_NAME");
            dc.MQ_PROT = prop.getProperty(key + "_MQ_PROT");
            dc.MQ_QUEUE_NAME = prop.getProperty(key + "_MQ_QUEUE_NAME");
            dc.MQ_QUEUE_SUB = prop.getProperty(key + "_MQ_QUEUE_SUB");
            dc.FILE_DIR = prop.getProperty(key + "_FILE_DIR");
        } catch (FileNotFoundException e) {
            dc = null;
        } catch (IOException e) {
            dc = null;
        }

        return dc;
    }

    public static void main(String args[]) throws Exception {
        MQConfig mc = MQConfig.getNewDbConfigFromKey("002");
        System.out.println(mc);
    }

    public void setMQ_QUEUE_SUB(String mQ_QUEUE_SUB) {
        MQ_QUEUE_SUB = mQ_QUEUE_SUB;
    }

    public String getMQ_QUEUE_SUB() {
        return MQ_QUEUE_SUB;
    }

    public static String getValueByKey(String key) {
        InputStream fis = null;
        String value = null;
        Properties prop = new Properties();
        try {
            fis = MQConfig.class.getClassLoader().getResourceAsStream(
                    "config.properties");
            prop.load(fis);
            value = prop.getProperty(key);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return value;
    }
}
 本文由用戶 hwl0420 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!