Java把文件放入IBM_MQ队列的代码
一、概述
以下代码可以实现读取一个文件夹内的所有文件,然后将文件转为字节流、放入IBM_MQ队列中(发送方代码);
接收方获取到流后转为文件即可。
注意,以下代码的字节流由两部分组成,约定的字符串+文件,接收方也需要按格式接收;如果不需要这样写,就自行修改,只发送文件即可。
二、代码
1.需要的jar包
com.ibm.mq-9.1.0.3.jar com.ibm.mq.jmqi-9.1.0.3.jar com.ibm.mq.allclient-9.0.0.jar
2.配置类ConfigUtil.java
这个类里有些ibm_mq的配置相关,例如队列名称等,代码如下:
import java.util.HashMap; /** * 配置类 */ public class ConfigUtil { //mq服务器的ip private static final String IBM_MQ_host = "10.123.123.123"; //queue private static final String IBM_MQ_Queue = "xxx.xxx.queue"; //mq管理器的名字 private static final String IBM_MQ_Manager = "xxx.xxx.manager"; //channel private static final String IBM_MQ_channel = "xxx.xxx.CHANNEL"; //port private static final String IBM_MQ_port = "1414"; //ccsid private static final String IBM_MQ_ccsid = "1381"; //待上传的文件夹路径 private static final String FILE_PATH = "f:/pdf/"; private static final HashMap<String,String> map; static { map = new HashMap(); map.put("IBM_MQ_host",IBM_MQ_host); map.put("IBM_MQ_channel",IBM_MQ_channel); map.put("IBM_MQ_port",IBM_MQ_port); map.put("IBM_MQ_ccsid",IBM_MQ_ccsid); map.put("IBM_MQ_Queue",IBM_MQ_Queue); map.put("IBM_MQ_Manager",IBM_MQ_Manager); map.put("FILE_PATH",FILE_PATH); } private static final ConfigUtil cu = new ConfigUtil(); public static ConfigUtil getInstance(){ return cu; } public static HashMap<String,String> getConfigMap(){ return map; } }
3.工具类IBMMQUtil.java
这个类是发送mq的工具类,代码如下:
4.主类Main.java
这个类是程序入口类,里面有main方法,代码如下:
import java.io.File; public class Main { /** * main方法,可以把文件转为字节流放入ibm_mq队列(任意文件都行,不是只pdf才行) */ public static void main(String[] args) throws Exception { //调用把pdf放入ibm_mq队列的方法 //这个是文件夹路径,会把文件夹里的所有文件都推送过去 uploadPdf(ConfigUtil.getInstance().getConfigMap().get("FILE_PATH")); } public static void uploadPdf(String path){ File file=new File(path); //找到文件夹下的所有文件的名字 String[] names=file.list(); System.out.println("开始执行pdf推送IBM_MQ,待推送文件夹为--"+path); boolean flag=false; int count=0; for(String name:names){ System.out.println("文件名称为:"+name); String fwpath=path+name;//实际文件地址 File File; try { File = new File(fwpath); //传入文件路径,mq队列名,mq管理器名,文件名 flag = IBMMQUtil.upload(fwpath, ConfigUtil.getInstance().getConfigMap().get("IBM_MQ_Queue"),ConfigUtil.getInstance().getConfigMap().get("IBM_MQ_Manager"), name); if(flag==true){//根据调用方法是否成功怕段是否删除服务器上的文件 System.out.println("上传成功,返回true"); if (File.exists()) { //File.delete(); //System.out.println("删除上传成功的文件"); } } count = count+1; } catch (Exception e) { System.out.println("文件上传出现异常!"); e.printStackTrace(); } } System.out.println("推送所有文件结束"); } }