Java EE 中的缓存值
我正在构建一个简单的消息委托应用程序。消息通过 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
@Ingo:您对数据库解决方案还好吗?您可以使用成熟的数据库服务器或简单的 apache derby 解决方案来实现此目的。
如果是这样,您可以有一个简单的表,您可以在其中存储消息唯一的 UId,并可以检查它的唯一性......该解决方案将具有以下优点:
@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: