【问题标题】:How can I store messages in a JMS Queue without using a Database?如何在不使用数据库的情况下将消息存储在 JMS 队列中?
【发布时间】:2014-06-13 12:01:22
【问题描述】:

我已使用 Servlet 将消息发送到 JMS 队列;
并且该队列有消息侦听器
但我没有在任何地方使用这些消息;
但是当我使用 WebLogic 管理控制台检查队列中的消息时;尽管它表明总共有 20 条消息,但它没有显示任何消息。
请告诉我如何将发送的消息保存在 JMS 队列中??
任何指导或建议都将是非常可观的。 谢谢!

【问题讨论】:

    标签: queue jms message-driven-bean message-listener


    【解决方案1】:

    我不是 WebLogic 专家,但一般来说:

    消息由 JMS 提供者保存,直到它们被使用。因此,您无需执行任何操作即可将这些消息保存在 JMS 队列中。

    消息侦听器可能已经使用了这些消息,并且管理控制台显示“处理的消息总数”而不是当前可用的消息?

    更新

    发送持久消息的示例。将 DeliverMode 设置为 PERSISTENT。使用此生产者发送的所有消息都将是持久的。

                // Create the destination (Topic or Queue)
                Destination destination = session.createQueue("TESTQ");
    
                // Create a MessageProducer from the Session to the Topic or Queue
                MessageProducer producer = session.createProducer(destination);
                // We want persistent messages
                producer.setDeliveryMode(DeliveryMode.PERSISTENT);
    

    【讨论】:

    • 所以,知道如何将这些消息保存在队列中;我不想使用这些消息;只是希望他们在队列中??
    • 看来我之前并不清楚。让我重申一下:一旦应用程序成功地将消息发送到 JMS 提供者(在您的情况下为 WebLogic),该消息将由 JMS 提供者(此处为 WebLogic)保存,直到它们被消费者接收。你不需要做任何事情。
    • @Shashi 仅当消息为 PERSISTENT 时,否则,如果提供者崩溃,内存中的消息将丢失; PERSISTENT 消息默认存储在磁盘上。
    • 是的。由于问题没有提到 JMS 提供程序崩溃,所以我没有提到这一点。
    • @user3462765 MDB是消费者,只要它在监听队列,就会从队列中消费消息;禁用 MDB 并仅发送到队列,然后消息将保留在队列中
    猜你喜欢
    • 2013-08-24
    • 1970-01-01
    • 2016-05-21
    • 1970-01-01
    • 2019-10-04
    • 1970-01-01
    • 2012-12-24
    • 1970-01-01
    • 2016-11-27
    相关资源
    最近更新 更多