gpt4 book ai didi

java - 如何将 JMS 队列视为临时存储?

转载 作者:行者123 更新时间:2023-12-01 04:44:17 26 4
gpt4 key购买 nike

我希望能够从队列中提取和插入消息。是否可以为此利用 JMS 功能,或者我是否需要为此创建自定义数据结构?

如果临时存储还有其他特定的设计模式,请告诉我。

更新:由于很多人要求更多细节,所以这里是。我的要求是将消息存储在队列中,多个客户端可以将数据推送到队列中,并在需要时从队列中拉回数据。该队列应该可供多个客户端使用。一条消息应该只处理一次,如果客户端无法处理数据,那么消息应该返回到队列。

最佳答案

您似乎在一个问题中提出了多个问题,因此澄清一些您需要回答的各个问题可能会对您有所帮助。

是的,可以将 JMS 用作“临时”存储,但这取决于您的意思以及您的需要。大多数 JMS 提供程序(例如 ActiveMQ)允许您在队列上执行以下操作:

  • 将队列设置为持久(即存储在磁盘上,如果队列重新启动,所有消息都在那里)或非持久(即不存储在磁盘上,如果队列重新启动,则不会有消息)。<
  • 您可以设置消息的过期时间,这样,如果未按时接收消息,它们就会被丢弃。

这取决于您所说的“临时存储”。 JMS 队列不是数据库,而是消息传递系统。

关于数据结构,您可以在 ObjectMessage 中序列化普通 Java 对象,也可以使用 TextMessage 序列化文本消息。因此您可以传递 XML、JSON、CSV 或任何您想要的内容。您还可以包含可用于路由的特殊 header 或与消息关联的其他元信息。再次取决于“自定义数据结构”的含义。您还可以发送原始 BytesMessageMapMessage(键值对)或其中包含不同数据类型的 StreamMessage另一个。

如果您需要字面意义上的临时存储,也许您应该考虑嵌入式数据库,例如 Derby 或 HSQLDB。我认为他们还具有配置来说明数据是否应该保留在内存中或在数据变得太大后转到磁盘。

关于java - 如何将 JMS 队列视为临时存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16087322/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com