Tout d’abord, présentons brièvement websphere mq, son installation et son utilisation.
websphere mq : utilisé pour transmettre des informations avec une fonctionnalité multiplateforme.
1 Installez websphere mq et démarrez
2 websphere mq crée un gestionnaire de files d'attente (tel que : MQSI_SAMPLE_QM)
3. Créez le type de file d'attente et sélectionnez le type Local (tel que lq)
4. Établissez le type de canaux et sélectionnez Connexion au serveur (telle que BridgeChannel)
Ensuite, regardons l'exemple de code :
MQFileReceiver.javapackage com.mq.dpca.file ; importer java.io.File ; importer java.io.FileOutputStream ; importer com.ibm.mq.MQEnvironment ; importer com.ibm.mq.MQException ; MQGetMessageOptions;importer com.ibm.mq.MQMessage;importer com.ibm.mq.MQQueue; importer com.ibm.mq.MQQueueManager; importer com.ibm.mq.constants.MQConstants; importer com.mq.dpca.msg.MQConfig; importer com.mq.dpca.util.ReadCmdLine; importer com.mq.dpca.util.RenameUtil /** * * Fonction de réception de fichier de groupe MQ * Interrogation active */public class MQFileReceiver { private MQQueueManager qmgr; // Connexion au gestionnaire de files d'attente private MQQueue inQueue; // File d'attente de transmission private String queueName = "" // Nom de la file d'attente private String host = ""; // port int privé = 1414; // Numéro de port d'écoute private String canal = "" // Nom du canal private String; qmgrName = ""; // Gestionnaire de files d'attente private MQMessage inMsg; // Créer un tampon de messages private MQGetMessageOptions gmo; // Définir les options d'acquisition des messages private static String fileName = null ccsid = 0; chaîne statique privée file_dir = null; /** * Entrée du programme* * @param args */ public static void main(String args[]) { MQFileReceiver mfs = new MQFileReceiver(); //Initialiser la connexion mfs.initproperty(); //Recevoir les fichiers mfs.runGoupReceiver(); //Obtenir le nom du script shell// String shellname = MQConfig.getValueByKey(fileName);// if( shellname!=null&&!"".equals(shellname)){// //Appel du shell// ReadCmdLine.callShell(shellname);// }else{// System.out.println("n'a pas de nom de shell, ne reçoit que des fichiers.");// } } public void runGoupReceiver() { try { init(); (); qmgr.commit(); System.out.println("/n Messages reçus avec succès "); mqe) { mqe.printStackTrace(); try { System.out.println("/n Sauvegarde de la transaction "); qmgr.backout(); catch (Exception e) { e.printStackTrace(); ); System.exit(2); } } catch (Exception e) { e.printStackTrace(); Initialiser les informations de connexion au serveur * * @throws Exception */ private void init() throws Exception { /* Définir les propriétés MQEnvironment pour les connexions client */ MQEnvironment.hostname = host; au gestionnaire de files d'attente*/ qmgr = new MQQueueManager(qmgrName); Définir l'option d'ouverture de file d'attente pour l'entrée */ int opnOptn = MQConstants.MQOO_INPUT_AS_Q_DEF | MQConstants.MQOO_FAIL_IF_QUIESCING; /* Ouvrir la file d'attente pour l'entrée */ inQueue = qmgr.accessQueue(queueName, opnOptn, null, null, null } /**); * Accepter La fonction principale du fichier * * @throws Exception */ public void getGroupMessages() { /* Définir les options d'obtention du message */ gmo = new MQGetMessageOptions(); gmo.options = MQConstants.MQGMO_FAIL_IF_QUIESCING; gmo.options = gmo.options + MQConstants.MQGMO_SYNCPOINT; / gmo.options = gmo.options + MQConstants.MQGMO_WAIT; /* Définir le délai d'attente */ gmo.waitInterval = 5000; /* Obtenir les messages uniquement */ gmo.options = gmo.options + MQConstants.MQGMO_ALL_MSGS_AVAILABLE; gmo.options + MQConstants.MQGMO_LOGICAL_ORDER ; gmo.matchOptions = MQConstants.MQMO_MATCH_GROUP_ID; /* Créer un tampon de message*/ inMsg = new MQMessage(); try { FileOutputStream fos = null; /* Traiter le message de groupe*/ 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)); = nouvel octet[msgLength]; inMsg.readFully(buffer); fos.write(buffer, 0, msgLength); /* Vérifiez s'il s'agit du dernier identifiant de message*/ char x = gmo.groupStatus; if (x == MQConstants.MQGS_LAST_MSG_IN_GROUP) { System.out .println ("Dernier message du groupe"); break; inMsg.clearMessage(); (Exception e) { System.out .println("Récepteur du message sans propriété, ne faites rien!"); inMsg.clearMessage(); } } else { int msgLength = inMsg.getMessageLength(); [msgLength]; inMsg.readFully(buffer); fos.write(buffer, 0, msgLength); Vérifiez s'il s'agit du dernier identifiant du message*/ char x = gmo.groupStatus; if (x == MQConstants.MQGS_LAST_MSG_IN_GROUP) { System.out.println("Last Msg in Group"); } } catch (Exception e) { char x = gmo.groupStatus if (x == MQConstants.MQGS_LAST_MSG_IN_GROUP) { System.out.println("Dernier message du groupe"); } break; } } if (fos != null) fos.close(); e.getMessage()); } } public void initproperty() { MQConfig config = nouveau MQConfig().getInstance(); if (config.getMQ_MANAGER() != null) { qmgrName = config.getMQ_MANAGER(); queueName = config.getMQ_QUEUE_NAME(); canal = config.getMQ_CHANNEL(); ); port = Integer.valueOf(config.getMQ_PROT()); ccsid = Integer.valueOf(config.getMQ_CCSID()); file_dir = config.getFILE_DIR();