不太清楚jms,但是mq也是一种消息队列,它可以设置是否取出后,就清除这条message的

解决方案 »

  1.   

    系啊系啊,怎么设置mq中是否取出后不消队这条message啊
      

  2.   

    在IBM MQ中,用MQ_BROWSE,就可以实现,只读而不删除!
    用MQ_GET,就是读后立刻删除!
      

  3.   

    消费者创建QueueSession或者TopicSession时有三种确认方式 如果你用客户端显示确认就可以使消息不消失。如
    QueueSession QSession = Conn.createQueueSession(false,Session.CLIENT_ACKNOWLEDGE);
    你必须在客户端显示调用message.acknowledge();才能删除队列中的消息。注意:是一次确认全部删除,也就是说调用message.acknowledge()后队列里所有消息都被删除。
    举个例子 :
    sender 发送8条消息到队列里。receiver在收到3条消息的时候调用message.acknowledge()。剩下的5条消息你就无法接收到了。
    如果你一直不确认队列里的消息那么队列里的消息会越来越多,最后造成资源的严重浪费
      

  4.   

    另外实现QueueBrowser接口可以对队列里的消息进行查看.getEnumeration()方法得到一个enumeration 类型的object,参阅jms的api. 但是队列里的消息必须被消费或者appserver重新启动才能保证资源被释放
      

  5.   

    mq是ibm的消息中间件。封状了jms的api实现强大的功能
    这个水平就不是俺们能比的上的咯