如何使用Java从MQ读取消息

时间:2014-11-07 16:06:44

标签: java compilation queue mq

我是Java新手,需要一些帮助。 我期待从MQ队列中读取消息,然后将消息输出到txt文件,最后从队列中删除原始消息。 我想出了以下内容,但它不会编译。 任何帮助将不胜感激! 谢谢!

public class test
{
public static void main(String[] args);
{
MQQueueManager QMgr=new MQQueueManager(qManager);                   
int openOptions=MQC.MQOO_FAIL_IF_QUIESCING | MQC.MQOO_INPUT_SHARED | MQC.MQOO_BROWSE;
MQQueue queue=QMgr.accessQueue(queueName, openOptions);         
MQMessage theMessage=new MQMessage();
MQGetMessageOptions gmo=new MQGetMessageOptions();  

gmo.options=MQC.MQGMO_WAIT | MQC.MQGMO_BROWSE_FIRST;
gmo.matchOptions=MQC.MQMO_NONE;
gmo.waitInterval=5000;

boolean thereAreMessages=true;

while(thereAreMessages){             **(Gives an "Illegal start of type" error)**
try{
    queue.get(theMessage,gmo);
    String msgText = theMessage.readString(theMessage.getMessageLength());
PrintStream out = new PrintStream(new         FileOutputStream("C:\\Users\\js04279\\Desktop\\test.txt")):
System.setOut(out);

System.out.println("REMOVING.............................");
getMessageOptions.options =MQC.MQGMO_MSG_UNDER_CURSOR;
}

catch(MQException e){
    if(e.reasonCode == e.MQRC_NO_MSG_AVAILABLE) 
        System.out.println("No more message available or retrieved");
        thereAreMessages=false;
    } 

catch (IOException e){
    System.out.println("ERROR: "+e.getMessage());
    }
}

I got the following error messages:
"test.java:17: illegal start of type"      - this was at the while statement
"test.java:35: <identifier> expected"

3 个答案:

答案 0 :(得分:0)

如果这是你在课堂上的所有内容,那么我认为你缺少2个结束括号。 1表示主要方法,1表示班级。

我看到你的最后一个结束括号是针对while循环的。

Java会将此视为该类的结束括号,并将其解释为您在类级别编写语句。这是不允许的,因此被视为非法类型的开始。

答案 1 :(得分:0)

在Public static void main(String args []);

之后删除分号

正确的陈述是

public static void main(String[] args) {
   //TODO your code
}

答案 2 :(得分:0)

请使用Eclipse或Net Beans等IDE,以避免编译时错误。使用IDE将以许多其他方式为您提供帮助。

你的代码对我来说似乎没问题。实际上不需要从队列中删除消息。从队列中读取消息后,应自动删除它。