【发布时间】:2016-06-18 07:44:08
【问题描述】:
我正在使用 Java 代码使用 WebSphere MQ 工具在队列中插入消息。在输入文本时,它会将消息存储在队列中。我想在插入消息时验证是否
1.队列存在与否
2.是否有通道错误
3.端口号不匹配
4.主机地址错误
我想捕获这些错误并将其存储在带有时间戳的文本文件中,并在错误日志中提供服务。
帮我怎么做。
在队列中插入消息的菜单
Menu based insertion of messages in queue
Message inserted in Websphere MQ
公共类QueueMessage { public static Scanner sc = new Scanner(System.in);
private MQQueueManager _queueManager = null;
public int port = 1413;
public String hostname = "192.168.100.120";
public String channel = "QM_HOME.Q_LOCAL";
public String qManager = "QM_HOME";
public String inputQName = "Q_LOCAL_END";
public String outputQName = "Q_LOCAL_END";
public QueueMessage()
{
super();
}
public void init(String[] args) throws IllegalArgumentException
{
// Set up MQ environment
MQEnvironment.hostname = hostname;
System.out.println("HOST :"+hostname);
MQEnvironment.channel = channel;
MQEnvironment.port = port;
System.out.println("init");
}
public void selectQMgr() throws MQException
{
_queueManager = new MQQueueManager(qManager);
}
public void write() throws MQException {
int openOptions = MQC.MQOO_OUTPUT + MQC.MQOO_FAIL_IF_QUIESCING;
try {
MQQueue queue = _queueManager.accessQueue(outputQName, openOptions,
null, // default q manager
null, // no dynamic q name
null); // no alternate user id
DataInputStream input = new DataInputStream(System.in);
System.out
.println("MQWrite v1.0 connected and ready for input, terminate with ^Z\n\n");
// Define a simple MQ message, and write some text in UTF format..
MQMessage sendmsg = new MQMessage();
sendmsg.format = MQC.MQFMT_STRING;
sendmsg.feedback = MQC.MQFB_NONE;
sendmsg.messageType = MQC.MQMT_DATAGRAM;
sendmsg.replyToQueueName = "QM_LOCAL_END";
sendmsg.replyToQueueManagerName = qManager;
MQPutMessageOptions pmo = new MQPutMessageOptions(); // accept the
String line = null;
System.out.print("Enter your Message: ");
line = sc.nextLine();
sendmsg.clearMessage();
sendmsg.messageId = MQC.MQMI_NONE;
sendmsg.correlationId = MQC.MQCI_NONE;
sendmsg.writeString(line);
// put the message on the queue
queue.put(sendmsg, pmo);
System.out.println("Message inserted: " + line);
queue.close();
_queueManager.disconnect();
// same
// as MQPMO_DEFAULT constant
}
catch (com.ibm.mq.MQException mqex) {
System.out.println(mqex);
} catch (java.io.IOException ioex) {
System.out.println("An MQ IO error occurred : " + ioex);
}
}
private void While(boolean b) {
// TODO Auto-generated method stub
}
}
【问题讨论】:
-
目前还不清楚要问什么。显示的工具似乎是 MQ Explorer,如果队列不存在,您将无法进入消息输入屏幕。如果 MQ Explorer 尚未连接,您将无法看到队列列表,在这种情况下,主机、端口和通道必须正确。
-
您说您正在使用 Java 代码 - 您能向我们展示您的 Java 代码吗?我不确定 MQ Explorer 屏幕截图与您的 Java 代码有什么关系?
标签: java smtp ibm-mq ftp-client