mrb*_*lah 7 java jms message-queue
当您将消息存储在队列中时,是不是更多的元数据信息,那么从队列中提取的人知道如何处理数据?队列中的实际信息并不总是包含所有信息.
假设你有一个类似Twitter的应用程序,每当有人发布消息时,你仍然需要将实际的消息文本存储在数据库中吗?
该队列将更多地用于向其他订户广播新消息已到达,然后这些服务可以采取进一步行动.
或者你真的可以将推文文本存储在队列中吗?(或者你可以,但那会很傻?)
队列消息是否可以具有状态字段,哪些订阅者可以在处理其工作流程的一部分时进行更改?(或者你会在数据库中这样做吗?)
只是想弄清楚何时使用队列与db.
当进程想要将数据和数据处理到另一个进程(可能在不同的主机上)时,有两种策略:
将所有数据存入队列项,让接收应用程序担心将其存储在数据库中,以及其他任何处理.
更新您的数据库,然后将一条小消息排队到另一个进程,只是为了通知它有新的数据需要按摩.
有许多因素可用于决定采用哪种策略:
如果您的数据库完全是ACID(人们希望),但您的排队系统(QS)不是,那么您的数据在数据库中会更安全.即使队列消息在服务器崩溃中丢失,您也可以运行脚本来处理在数据库中找到的未处理数据.这是选项2的情况.
如果您的数据非常大(例如,1 MB或更多),那么用QS加载它可能会很残忍.如果它是持久的,你最终会将数据写入两次,首先是QS的持久性,然后是数据库.这可能会拖累性能并影响您选择1.
如果您的数据库速度很慢或甚至无法访问应用程序的前端,那么选项1就是.
如果您的第二个流程要对数据执行某些操作但不将其存储在数据库中,那么可能需要选项1.
再也想不到了,但我希望你能得到这个想法.
| 归档时间: |
|
| 查看次数: |
4968 次 |
| 最近记录: |