1

我正在构建一个简单的消息委托应用程序。消息通过 JMS 在两端发送。我正在使用 MDB 来处理传入消息、转换它们并将它们发送到目标队列。不幸的是,相同的消息可以多次发送到传入队列,但不允许转发重复项。

那么实现这一目标的最佳方法是什么?

由于可以有多个 MDB 监听传入队列,因此需要一个缓存,我可以将传入消息的唯一消息 uuid 存储至少一个小时。应该如何访问这个缓存?通过单例/静态类(我正在运行 Java EE 5,因此没有单例注释)?

另外我觉得所有的操作都必须同步,对吧?这会不会对性能造成太大影响?

4

1 回答 1

2

@Ingo:您对数据库解决方案是否满意。您可以为此使用完整的数据库服务器或简单的 apache derby 解决方案。如果是这样,您可以有一个简单的表,您可以在其中存储消息唯一的 UId 并可以检查它的唯一性....此解决方案将具有以下好处:

  1. 简单的代码
  2. 无需时间限制缓存(1 小时)。您可以永远检查消息的唯一性。
  3. 持续记录传入的消息。
  4. 不需要昂贵的同步,您可以依靠数据库隔离级别来保持一致性。
  5. 为您可能的许多应用程序部署提供集中式解决方案。
于 2011-07-15T06:40:32.043 回答