2009-10-19 119 views
0

之情况:如何处理MSMQ延迟问题?

功能A() - >创建消息,并且在队列中把该消息

监听器 - 在队列>检查不断如果theres一条消息并将其发送到服务 过程中它并得到结果和结果插入到数据库

函数b() - >获取从DB

结果假设结果从该服务没有出来和函数b()现在被称为,消息ID的记录将从数据库返回空值因为结果还没有被插入。

你如何处理这些之情况?

回答

3

如果函数B依赖于服务完成处理,那么它应该流掉消息队列为好。

当服务完成后,它应该写一个新的消息到另一个队列。另一个侦听器应该把它捡起来,并调用函数B.

如果函数B是由用户界面手势启动,UI只需要传达所需的进程尚未完成,并禁止该动作,直到它。

+0

队列或事件 - 它需要一次收听已完成插入事件到数据库要由适当的机制触发任一方式。 – Murph 2009-10-19 15:53:56

+0

但在代码级别的代码被用线THNü会怎么做,怎么把ü从DB获得结果之前的那些功能将被执行,RU提示显示一个消息框“请等待执行的线,你的要求仍然是在进程下“,然后再次检查数据库是否已插入记录,但如果它仍未插入? – kurozakura 2009-10-19 16:22:49

+0

类似的东西 - 你可以要求用户手动刷新用户界面(使用刷新按钮或类似的东西),或者添加一个定时器到你的UI,以合理的间隔检查数据库并在功能B完成时更新它。如果用户选择在完成之前关闭该程序(或根据您的情况离开网页),那就是他们的业务。 – 2009-10-19 16:58:06