首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从JMS队列中删除消息

如何从JMS队列中删除消息
EN

Stack Overflow用户
提问于 2012-03-02 14:49:41
回答 5查看 37.1K关注 0票数 13

是否有API可以在不使用监视管理工具的情况下从JMS队列中删除消息。

EN

回答 5

Stack Overflow用户

发布于 2012-03-02 15:11:25

没有删除消息的直接接口。可以调用queueReceiver.receive()方法从队列中删除消息。QueueBrowser不会从队列中删除消息。

票数 11
EN

Stack Overflow用户

发布于 2015-04-14 12:16:46

我不得不另外调用session.commit()让消费者删除消息。

此外,receivenowait应用程序接口不起作用;请调用receive(1000)

下面是我写的一段在jboss上工作的代码

代码语言:javascript
运行
复制
try {
  connection = connectionFactory.createConnection();
  session = connection.createSession(true,-1);
  Queue queue = (Queue) QueueConnectionFactory.getInitialContext().lookup("/queue/DLQ");
  QueueBrowser browser = session.createBrowser(queue);
  Enumeration<?> enum1 = browser.getEnumeration();

  while(enum1.hasMoreElements()) {
    TextMessage msg = (TextMessage)enum1.nextElement();
    MessageConsumer consumer = session.createConsumer(queue, "JMSMessageID='" +  msg.getJMSMessageID()  + "'");
    //You can try starting the connection outside while loop as well, I think I started it inside while loop by mistake, but since this code worked I am hence letting you know what worked  
    connection.start();
    Message message = consumer.receive(1000) ;
    if ( message != null ) {
        //do something with message
    }
  }
} 
finally {
  session.commit();
  consumer.close();
  browser.close();
  session.close();
  connection.close();
}
票数 5
EN

Stack Overflow用户

发布于 2013-06-15 02:48:51

下面是我可以做的一些事情:

我假设您想要删除符合特定条件的邮件。

代码语言:javascript
运行
复制
Queue destination = session.createQueue("your_q");

QueueBrowser browser = session.createBrowser(destination);

Enumeration<?> enum1 = browser.getEnumeration();

while(enum1.hasMoreElements())
{
   TextMessage msg = (TextMessage)enum1.nextElement();
   if(msg.getStringProperty("any_prop").equals("some_prop"))
   {
       MessageConsumer consumer = session.createConsumer(destination, "id='" +   msg.getStringProperty("id") + "'");
      consumer.receive(1000);
   }
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9529214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档