我的意思是对主题的持久订阅.
在weblogic创建JMS连接工厂的时候,有一个选项Client Id.
以后在代码中通过这个client id就可以创建一个持久主题订阅者.但是如果有两段代码同行指点client id就会有异常,说client id is in used.所以我想问,在一个JMS连接工厂中是不是只能创建一个主题的持久订阅者

解决方案 »

  1.   

    一般在创建消息消费者的时候动态设定Client Id.weblogic创建JMS连接工厂的时候的Client Id.没有研究过 TopicConnectionFactory TCF = null;
      public Topic topic = null;
      public TopicConnection TC = null;
      public TopicSession TSession = null;
    ....
          TC.setClientID(clientID); //clientID自己定要保证不重复
          TSession = TC.createTopicSession(transacted, Session.AUTO_ACKNOWLEDGE);
          TSubscriber = TSession.createDurableSubscriber(topic, clientID);
          TSubscriber.setMessageListener(this);
          TC.start();
      

  2.   

    楼上的兄弟,你在自己的代码中指点client id 要保证不重复,是不是也只能创建一个持久预定者?
      

  3.   

    对,如果你在你的factory下,创建了一个clientId,那么使用这个ID,就者能够有一个连接使用这个factory。否则包错。就是你提到的client id is used.
      

  4.   

    那我要是想创建多个持久主题预定者.怎么做呢,难道是要创建多个factory?不会是这样的吧!!
      

  5.   

    不用创建多个工厂 在配置factory的时候不要指定clientid 然后在消费者里自己指定clientid 只要都是预定同一个topic 收到的消息就是一样的 每一个消费者都是一个持久预定者