Java EE 中的缓存值

发布于 2024-11-19 20:08:30 字数 282 浏览 2 评论 0原文

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

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

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

另外我觉得所有的操作都必须是同步的吧?这对性能影响太大吗?

I'm building a simple message delegation application. Messages are being send on both ends via JMS. I'm using a MDB to process incoming messages, transform them and send them to a target queue. Unfortunately the same messages can be send to the incoming queue more than once but it is not allowed to forward duplicates.

So what is the best way to accomplish that?

Since there can be multiple MDBs listening on the incoming queue a need a single cache where I can store the unique message uuids of the incoming messages for at least an hour. How should this cache be accessed? Via a singleton/ static class (I'm running Java EE 5 and thus don't have the singleton annotation)?

In addition I think all operations must be synchronized, right? Does that harm performance too much?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

半葬歌 2024-11-26 20:08:30

@Ingo:您对数据库解决方案还好吗?您可以使用成熟的数据库服务器或简单的 apache derby 解决方案来实现此目的。
如果是这样,您可以有一个简单的表,您可以在其中存储消息唯一的 UId,并可以检查它的唯一性......该解决方案将具有以下优点:

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

@Ingo: are you OK with database solution. You can full fledged DB server or simple apache derby solution for this..
If so, you can have a simple table where you can store message unique UId and can check against it for uniqueness....this solution will have following benefits:

  1. Simple code
  2. No need of time bound cache(1 hour). You can check for uniqueness of a message forever.
  3. Persistent record of what messages came in.
  4. No need of expensive synchronized, you can rely on DB isolation level to have consistency.
  5. centralized solution for your possibly many deployments of application.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文