【问题标题】:Java MDB - How to keep track of number of messages processedJava MDB - 如何跟踪处理的消息数
【发布时间】:2014-01-17 13:17:09
【问题描述】:

我有一个处理不同类型消息(对象消息)的 MDB。我想跟踪 MDB 收到的消息数量以及收到的消息类型的计数。

虽然我的 MDB 分布在多个 JVM 上,但我可以很好地跟踪单个 JVM 的计数。

不鼓励在 EJB 中使用静态变量,那么我们还有其他替代方案吗?

【问题讨论】:

  • 这不是消息代理的工作吗?想到的一个想法是使用持久消息。
  • 数据库是存储这些数据的好选择吗?

标签: java jakarta-ee ejb jms java-ee-6


【解决方案1】:

一个想法:

想到了@Singleton EJB。我会称它为Statistics 并在那里保留各种统计数据。每次发生需要统计的Xxx 事件时,都可以调用addToXxxCount() 方法。实际计数可从相应的getXxxCount() 获得。它需要getXxxCount() 方法上的读锁和addToXxxCount() 上的写锁(参见单例EJB 的并发性)。或者,您可以自己同步。

实际跟踪计数的变量(intlong)是非静态的,并且容器保证 EJB 仅实例化一次。您可以获得所有统计信息的中心参考点。

【讨论】:

  • 您不需要计数器的锁定或同步:使用 AtomicIntegerAtomicLong 和方法 incrementAndGet() 来添加计数,并使用 get() 来获取计数.
  • 是的,这是“同步自己”部分的一个选项。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-16
  • 2012-01-13
  • 2022-11-22
  • 2019-12-11
  • 2018-03-17
  • 1970-01-01
相关资源
最近更新 更多