跳到主要内容

浏览消息

客户端应用程序可以使用 QueueBrowser 来查看队列中转储的消息,而无需消费它们。

  • 队列的访问类型(即独占或非独占)所施加的传递限制仅影响从队列消费消息。它们不影响浏览队列上的消息。
  • 当客户端使用直接传输模式时,不能使用 QueueBrowser 浏览临时队列。

相关示例

有关如何浏览队列上消息的示例,请参阅 SolJMSQueueBrowser 示例。

要浏览队列上的消息,请执行以下操作:

  1. 创建 QueueBrowser 对象。

调用 Session.createBrowser(...) 并传入您想要浏览的队列。

可选地,您还可以传入一个选择器字符串作为 Selector 属性。使用选择器可以使客户端仅浏览与选择器匹配的消息。请注意,使用复杂的选择器可能会导致消息总线评估转储消息的时间更长。有关选择器的更多信息,请参阅选择器。

  1. 使用 QueueBrowser 获取一个 Enumeration 对象,该对象可用于按队列接收消息的顺序(从最旧到最新)浏览当前队列消息。

调用 QueueBrowser.getEnumeration()

  1. 遍历队列上的消息。

调用 Enumeration.hasMoreElements()。如果浏览器的本地消息缓冲区中至少有一条消息,则此方法返回 true;否则返回 false

如果返回 false,并不一定意味着队列为空,而是本地缓冲区当前不包含任何消息。后续对 Enumeration.hasMoreElements()Enumeration.nextElement() 的调用可能会返回 true 并返回一条消息。

如果您想浏览队列上的每条消息,建议使用 enumeration.nextElement()。此方法会持续返回消息,直到本地队列为空且在 10 秒内未收到消息。

客户端应用程序不应假设 JMS API 在浏览转储消息时使用的轮询策略。例如,在浏览消息时,JMS API 可能会向事件代理请求更多消息,或者返回已缓冲的消息。

显示消息

要以人类可读的形式显示消息的内容,您可以调用 SolJmsUtility.dumpMessage(Message Msg) 并传入消息实例。此方法返回一个文本字符串,其中包含 JMS 消息字段及其值,以及 Solace 消息字段及其值。

此方法作为开发应用程序时程序员的辅助工具提供。