0

私は WSO2 MB 2.0.1 を使用しており、チュートリアルで提供されている JMS Java サブスクライバーを永続サブスクライバーに拡張しようとしました。次に、jms クライアントを停止し、いくつかのメッセージをトピックに送信します。しかし、jms クライアントを起動すると、メッセージが受信されません。

永続的なサブスクライバーを作成する方法を教えてください。私の要件は、jms サブスクライバーがオンラインになったときにメッセージを受信することです。

私のコード: public void subscribe(String topicName) {

    Properties initialContextProperties = new Properties();
    initialContextProperties.put("java.naming.factory.initial",
            "org.wso2.andes.jndi.PropertiesFileInitialContextFactory");
    String connectionString = "amqp://admin:admin@clientID/carbon?brokerlist='tcp://localhost:5672'";
    initialContextProperties.put("connectionfactory.qpidConnectionfactory", connectionString);
    initialContextProperties.put("topic.myWarning", "myWarning");

    try {
        InitialContext initialContext = new InitialContext(initialContextProperties);
        TopicConnectionFactory topicConnectionFactory =
                (TopicConnectionFactory) initialContext.lookup("qpidConnectionfactory");
        TopicConnection topicConnection = topicConnectionFactory.createTopicConnection();
        //topicConnection.setClientID("clientID");
        topicConnection.start();
        TopicSession topicSession =topicConnection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);

        //Topic topic = topicSession.createTopic(topicName);
        Topic topic =(Topic) initialContext.lookup(topicName);
        TopicSubscriber topicSubscriber =
                topicSession.createDurableSubscriber(topic, "tom");
        TextMessage receivedMessage = (TextMessage)topicSubscriber.receive();
        System.out.println(receivedMessage);
       // topicSubscriber.setMessageListener(new JCOMessageListener(
        //        topicConnection, topicSession, topicSubscriber));

    } catch (NamingException e) {
        e.printStackTrace();
    } catch (JMSException e) {
        e.printStackTrace();
    }
}
4

2 に答える 2

0

JMS クライアントは完全に有効です。

WSO2 MB 2.0.1 の永続トピック サブスクリプションにバグがありました。本日より1ヶ月以内にリリース予定のWSO2 MB 2.1.1版にて修正いたしました。

ありがとう。

于 2013-01-11T04:20:45.543 に答える