mbsgetw5.java
来自「Hulft-Message是用来在Internet上传输文件数据的商用Middl」· Java 代码 · 共 208 行
JAVA
208 行
// --------------------------------------------------------------------------------
//
// Program name : MBSgetw5.class
//
// Description : Sample Java program that gets a message from a queue
// with wait option
//
// (C) Copyright SAISON INFORMATION SYSTEMS CO.,LTD. 2004 All Rights Reserved.
//
// --------------------------------------------------------------------------------
// --------------------------------------------------------------------------------
//
// Function :
//
// "MBSgetw5" is a sample Java program to get a message from a queue with
// wait option.. "get()" method is blocked when the message does not exist in the
// specified queue. This program gets a message with "WAIT" as UserDefineID
// from specified queue, and writes this to StdOut.
//
// This program has the following parameters. If the optional parameters
// are omitted, the parameters in System-Environment file( mbcenv.properties )
// will be used.
//
// required :
//
// optional :
// (1) -s Server : The name of HULFT-Message Server
// (2) -p Port : The port of HULFT-Message Server
// (3) -q Queue : The name of the queue
// (4) -w Timeout : The value of the timeout
//
// --------------------------------------------------------------------------------
import jp.co.saison.sis.hulft.msg.*;
class MBSgetw5 {
public static void main(String args[]) {
String usage =
"Usage : MBSgetw5 [-s Server -p Port] [-q Queue] [-w Timeout]";
// ------------------------------------------------------------------------
// Check the arguments
// ------------------------------------------------------------------------
if (args.length > 8) {
System.out.println(usage);
return;
}
boolean arg_s = false, arg_p = false, arg_q = false, arg_w = false;
String server = ""; // user define server name
int port = 0; // user define server port
String queue = ""; // user define queue name
int timeout = 0; // user define timeout value
for (int i = 0; i < args.length; i++) {
if (args[i].equals("-s")) {
// server name
if ((args.length - i) <= 1) {
System.out.println(usage);
return;
}
i++;
server = args[i];
arg_s = true;
} else if (args[i].equals("-p")) {
// server port
if ((args.length - i) <= 1) {
System.out.println(usage);
return;
}
i++;
port = Integer.parseInt(args[i]);
arg_p = true;
} else if (args[i].equals("-q")) {
// queue name
if ((args.length - i) <= 1) {
System.out.println(usage);
return;
}
i++;
queue = args[i];
arg_q = true;
} else if (args[i].equals("-w")) {
// timeout value
if ((args.length - i) <= 1) {
System.out.println(usage);
return;
}
i++;
timeout = Integer.parseInt(args[i]);
arg_w = true;
} else {
System.out.println(usage);
return;
}
}
if ((arg_s && !arg_p) || (!arg_s && arg_p)) {
// server name and server port are mutually required.
System.out.println(usage);
return;
}
MBServer mbs = null;
try {
//---------------------------------------------------------------------
// Connect to HULFT-Message Server
//---------------------------------------------------------------------
if (server.equals("")) {
// read server name & server port from <mbcenv.properties>.
mbs = new MBServer();
} else {
// specify server name & server port.
mbs = new MBServer(server, port);
}
mbs.connect();
//---------------------------------------------------------------------
// Open the queue
//---------------------------------------------------------------------
MBQueueRequester mbqrq = null;
if (queue.equals("")) {
// read queue name from <mbcenv.properties>.
mbqrq = new MBQueueRequester();
} else {
// specify queue name.
mbqrq = new MBQueueRequester(queue);
}
MBQueueSession mbqs = mbs.openQueue(mbqrq);
//---------------------------------------------------------------------
// Get the message from the queue
//---------------------------------------------------------------------
MBMessage msg = new MBMessage(mbs);
MBStreamMessage stream = new MBStreamMessage();
MBMessageGetRequester mbgetrq = new MBMessageGetRequester(stream);
mbgetrq.setUserDefineId("WAIT"); // user define ID
// Wait mode
mbgetrq.setWaitMode(MBMessageRequester.WAITMODE_WAIT);
// Timeout. (if timeout is not specified, use default value.)
if (arg_w) {
mbgetrq.setTimeout(timeout);
}
int GET_WAIT_TIMEOUT = 407;
// Retry until message is available
boolean isAvailable = false;
MBMessageGetRequester result = null;
do {
try {
result = msg.get(mbqs, mbgetrq);
isAvailable = true;
} catch (MBException e) {
// HULFT-Message Server error occured.
if (e.getDetailCode() == GET_WAIT_TIMEOUT) {
System.out.println("No message is available. Retry.");
continue;
}
} catch (Exception e) {
e.printStackTrace();
break;
}
} while (!isAvailable);
//---------------------------------------------------------------------
// Print message body
//---------------------------------------------------------------------
if (isAvailable) {
byte[] message = new byte[(int)result.getMessageSize()];
stream.read(message);
System.out.println(">> " + new String(message));
}
//---------------------------------------------------------------------
// Close the queue
//---------------------------------------------------------------------
mbs.closeQueue(mbqs);
System.out.println("Normal termination");
} catch (MBException e) {
System.out.println("HULFT-Message error occured.");
System.out.println("Exception class : " + e.getClass());
System.out.println("Error Code : " + e.getErrorCode());
System.out.println("Detail Code : " + e.getDetailCode());
System.out.println("System Code : " + e.getSystemCode());
System.out.println("Error Message : " + e.getDetailMessage());
e.printStackTrace();
} catch (Exception e) {
System.out.println("Exception class : " + e.getClass());
System.out.println("Exception message : " + e.getMessage());
e.printStackTrace();
} finally {
//---------------------------------------------------------------------
// Disconnect from HULFT-Message Server if already connected
//---------------------------------------------------------------------
if (mbs != null) {
if (mbs.isSession()) {
try {
mbs.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?