我希望能够从队列中拉出和插入消息。是否可以为此利用JMS功能,或者我是否需要为此创建自定义数据结构?
如果临时存储还有其他特定设计模式,请告诉我。
更新: 由于许多人要求更多细节,所以在这里。我的要求是将消息存储在队列中,多个客户端可以从中将数据推送到该队列,并在需要时从中提取数据。此队列应该可供多个客户端使用。一条消息只应处理一次,如果客户端无法处理数据,则消息应返回队列。
答案 0 :(得分:0)
您似乎在一个问题中提出了多项问题,因此您可能会有一点澄清您需要回答的个别问题。
是的,可以将JMS用作“临时”存储,但这取决于您的意思和所需内容。大多数JMS提供程序(例如ActiveMQ)允许您在队列上执行以下操作:
这取决于您所称的“临时存储”。 JMS队列不是数据库,它是一个消息传递系统。
关于数据结构,您可以序列化ObjectMessage
中的普通Java对象以及TextMessage
的文本消息。因此,您可以传递XML,JSON,CSV或任何您想要的内容。您还可以包含可用于路由的特殊标头或与消息关联的其他元信息。再次取决于“自定义数据结构”的含义。您还可以一个接一个地发送原始BytesMessage
或MapMessage
(键值对)或具有不同数据类型的StreamMessage
。
如果您需要字面意义上的临时存储,也许您应该查看嵌入式数据库,例如Derby或HSQLDB。我认为他们也有配置来说明数据是否应该保留在内存中,或者在数据变得太大之后转到磁盘上。