【问题标题】:Keeping track of processed jms messages跟踪处理的 jms 消息
【发布时间】:2011-06-10 22:31:24
【问题描述】:

我正在使用 ActiveMQ,Spring。

有什么方法可以让我跟踪所有已处理的消息。我必须跟踪已处理的所有消息。我还想在以后查看这些已处理的消息。

  • 我应该为此使用数据库吗?
  • 有什么好的库可以让这个操作变得简单
  • 我不想在数据库中为每种模型对象创建表

【问题讨论】:

  • 您需要提供更多详细信息,以便有人提供答案。听起来您正在寻找某种类型的审计。 “保持跟踪”非常模糊。您可以将消息放入日志中。您还可以通过在每个处理阶段将有效负载或整个消息序列化到数据库字段来避免大量数据库表。

标签: java spring jms activemq


【解决方案1】:

一般来说,我建议您将消息记录和/或记录到数据库中。如果您只是想稍后查看消息,简单的日志记录可能就足够了。如果您需要通过 UI 进行事务汇总/搜索,那么数据库会更好。

但是,您也可以使用 ActiveMQ 虚拟目标来实现您想要的。有了这个,您可以将 1 个目的地转发到 2 个其他目的地。然后,您的应用程序可以在 1 个目标上侦听,而消息的副本将放在另一个目标上供您查看。例如:

  <broker persistent="false" useJmx="false" xmlns="http://activemq.apache.org/schema/core">
    <destinationInterceptors>
      <virtualDestinationInterceptor>
        <virtualDestinations>
          <compositeQueue name="MY.QUEUE">
            <forwardTo>
              <queue physicalName="MY.QUEUE.PROCESS" />
              <topic physicalName="MY.QUEUE.REVIEW" />
            </forwardTo>
          </compositeQueue>
        </virtualDestinations>
      </virtualDestinationInterceptor>
    </destinationInterceptors>

  </broker>

将定义一个队列 MY.QUEUE,其中每条消息都将在 .PROCESS 和 .REVIEW 队列中结束。

【讨论】:

    【解决方案2】:
    1. 我会使用数据库。
    2. 也许您可以使用诸如 Hibernate 之类的 ORM,但 JDBC 或 SpringTemplates 可能会更好。
    3. 与其为每个模型对象创建一个单独的表,不如创建一个“消息”表并将不常见的部分序列化为有效负载 blob(或文本)。然后,您可以使用实用程序反序列化消息以供稍后查看(或回放)。

    【讨论】:

      【解决方案3】:

      卡提克,

      这是一个很好的编程问题,但它更像是一个我应该编程什么的问题,而不是一个“我该怎么做”的问题。很难回答“我应该编程什么问题”,因为你应该编程什么直接取决于你需要什么。充其量,我们只能猜测您真正需要什么。

      如果您需要更新已处理的 JMS 消息,那么数据库将使更新变得容易。如果您需要证明没有人更新“记录”条目,那么数据库可能无法完成这项工作。

      假设此日志用于查看哪些处理速度非常慢的消息仍需要完成。然后数据库将提供简单的搜索,前提是搜索的人知道 SQL。但是,如果日志更多的是存档,那么数据库只是增加了整个过程的开销,结构化文件就可以了。

      在 Java 中,有 JDBC 用于写入和检索数据库,它不是一个很难使用的 API。话又说回来,还有一些不错的日志框架,当然还有 FileOutputStream。在不知道如何使用此日志的情况下,很难确定哪些技术真的是矫枉过正,同样不可能知道哪些技术不够。

      返回并查看日志的使用方式,然后评估数据库提供的功能是否过度。

      干杯, 埃德

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-16
        • 1970-01-01
        • 2010-10-12
        • 1970-01-01
        相关资源
        最近更新 更多