EJB 2.0 中的message Driven Bean 是异步,也就是说,jms 客户机可以发送消息而不必等待回应。当 jms 客户机发送消息时,它并不等待回应。它执行发送操作,然后继续执行下一条指令。消息可能最终转发到一个或许多个客户机,这些客户机都不需要作出回应

解决方案 »

  1.   

    String clientID = "qq";
          con.setClientID(clientID); //保证clientID不回出现重复
          TopicSession session = con.createTopicSession(false, ACKNOWLEDGE_TYPE);
          TopicSubscriber topicSubscriber = session .createDurableSubscriber(topic, clientID);
          topicSubscriber.setMessageListener(this);这样就行了
      

  2.   

    我现在使用session .createDurableSubscriber(topic, clientID);进行了持久性消息订阅;
    但是发现订阅之后会收到所有的发到同一topic的所有消息,不管con.setClientID(clientID)中的clientID是多少。
      就是说我先用session .createDurableSubscriber(myTopic,"1");进行订阅;然后用con.setClientID("1") con.setClientID("2") con.setClientID("3")发三次消息到myTopic。然后这三个消息使用clientID="1"都能收到。 
      ClientID对订阅起作用,对发送消息起什么作用呢? 请问这样有问题吗?
      

  3.   

    ClientID 只是标识不同的订阅者 只要订阅了同一主题的订阅者都会收到这个主题的消息 如果想收不同的消息就订阅不同的主题
      

  4.   

    也可以在创建连接工厂的时候设置clientid(容器里创建connectionfactory的时候设定)
    这种我没用过
      

  5.   

    JMS Topic就是这样的,它是广播式的,就像收音机前的听众,你没听到这个节目就过去了,他不会替你保存下来,想想这样也是合理的啊。
      

  6.   

    但是你用队列QUEUE就是异步的