JMS 是不是有队列窥视的概念?
Posted
技术标签:
【中文标题】JMS 是不是有队列窥视的概念?【英文标题】:Does JMS have a concept of a queue peek?JMS 是否有队列窥视的概念? 【发布时间】:2013-02-25 08:49:24 【问题描述】:从一般计算机科学的角度来看 - 当我们从逻辑意义上考虑队列时 - 我们认为能够“窥视”队列中的第一项。
当我查看 JMS API 时 - 它有一个 MessageListener
- 它有一个 OnMessage()
方法。这有点像“不要给我们打电话——我们会打电话给你。”
JMS 有队列窥视的概念吗?
【问题讨论】:
您打算如何使用此功能?您可以阅读一条消息并将其回滚,以便再次在队列中看到它。 感谢@PeterLawrey - 如果您可以发布一个指向此示例的链接,那么我会将其标记为已回答。 关闭自动提交。这需要您向他们的 commit() 消息或回滚消息。我不知道有什么好的例子,但谷歌可能会有所帮助。 实际上,如果 JMS 有某种队列窥视功能会非常好,所以如果你想暂停你的消费者,你可以在消费消息之前检查一个标志。或者,如果消息驱动 bean 可以有某种 @beforeOnMessage 方法,您可以在实际使用消息之前执行该方法 【参考方案1】:1) 如果要同步接收消息,请使用 MessageConsumer.receive
2) 基本上,队列中的“窥视”意味着返回但不移除队列的头部。 为此,您可以使用QueueBrowser 来查看队列中的消息而不删除它们。
【讨论】:
【参考方案2】:JMS 有一个QueueReceiver,它可以接收消息。您可以为此 QueueReceiver 设置 MessageListener 以接收新消息的通知。
【讨论】:
以上是关于JMS 是不是有队列窥视的概念?的主要内容,如果未能解决你的问题,请参考以下文章