JMS的持久订阅???
大家好,我最近在搞JMS,其中用到TOPIC的持久订阅,不过折腾了我几天,哎!还是没有一个结果;
先订阅主题,然后发布消息一切运行正常,而先发布消息到一个主题,然后在订阅,却收不到消息啊???按照下边的方法调用了setClientID,也不行啊!!!
topicConnectionFactory = SampleUtilities.getTopicConnectionFactory();
topicConnection = topicConnectionFactory.createTopicConnection();
topicConnection.setClientID("3721");//都说是调用了这个函数就行的,可是???
topicSession = topicConnection.createTopicSession(false,
Session.AUTO_ACKNOWLEDGE);
topic = SampleUtilities.getTopic(topicName, topicSession);
topicConnection.stop();//为什么先STOP??
topicSubscriber = topicSession.createDurableSubscriber(topic,
"3721");//
topicListener = new TextListener();
topicSubscriber.setMessageListener(topicListener);
topicConnection.start();//有时候是异步,有时候就被阻塞,我晕???
我不明白,持久订阅怎样保存它要订阅的消息,靠client-id,不过topicConnection一断掉,那么JMS又会怎样维护这个client-id?文档说注册client-id有两种方法,其中setClientID函数是动态的,那另外一种方法是什么呢?(我用的JMS Provider是OC4J FOR ORACLE)
还有人说必须用嵌套类??不过SUN带的一个例子就是嵌套的??