让我先说明问题,然后选择一个消息队列。我有一个数据层,它将是事务性的,并且极其重要,然后尝试在它们发生时处理这些问题我希望从头开始实现我的应用程序。
我已决定使用Microsoft Message Queue解决此问题,并在时间允许的情况下异步执行插入操作。但是我很快遇到了问题。我执行的某些插入可能需要立即调用(即:检索)(假设这是针对POS系统的,如果您需要调用最后一个事务 - 仍未插入的事务,会发生什么)。
我决定解决这个问题的方法是抽象MessageQueue并将其组合到我的数据访问层中,从而创建一组数据返回给数据层用户的假象(我考虑过其他问题,在这种情况下发生(即:基本上是脏读等)并且为了我的目的而得出结论我可以控制这些问题。)
然而,这就是事情变得有点令人讨厌......我已经研究出如何回复这些消息(这些问题很少)但是我被困在哪里了;如何创建查询我的消息队列的通用(或至少某种通用)方式?我可以最大限度地减少SQL查询和MessageQueue查询之间的重复。我已经考虑过使用LINQ(但对该技术的理解非常有限),并且还尝试使用迄今为止非常臭的Predicates实现。
我可以利用这种问题的模式吗?我是以错误的方式来做这件事的吗?有没有人对我如何解决这个问题有任何想法?有人甚至理解我在说什么吗? : - )
任何和所有输入都将受到高度赞赏并认真考虑......
再次感谢。
对任何有兴趣的人。我决定参加 最终只是缓存了 交易在另一个地方和 按预期和描述使用MSMQ 下方。
答案 0 :(得分:1)
如果队列中有大量的消息,那么枚举这些消息将成为一个严重的瓶颈。 MSMQ专为先进先出的访问而设计,任何不遵循该模式的内容都会让您在性能方面感到非常悲伤。
答案很大程度上取决于您将要执行的查询类型,但答案可能是某种非SQL数据库(CouchDB或BerkeleyDB等)