gpt4 book ai didi

c# - MSMQ 用于持久性?

转载 作者:太空狗 更新时间:2023-10-29 22:28:02 29 4
gpt4 key购买 nike

在我的项目中,我收到来自客户端的事务,然后处理它并通过 WCF 将状态返回给客户端。如您所知,我必须以某种方式保存交易以用于恢复目的和持久性。

我正在考虑为此目的使用 MSMQ。当交易开始时,我会将其“保存”在 MSMQ 上(出于性能原因,数据库保存将分批进行)。

MSMQ 对此有好处吗?你知道创造持久性的更好方法吗? “备份”事务并保持高性能的最佳方式是什么?

最佳答案

在选择技术时,我认为不仅要考虑该技术能否满足您的需求,还要考虑它是否是设计以满足您的需求。我的意思是你应该选择最好的选项,而不是仅仅选择看起来足够好的第一个选项。您可能可以使用日志记录或文本文件或各种其他方式解决此问题,但这并不意味着您应该这样做。

在这种情况下我的优先顺序是

  1. 数据库
  2. MSMQ
  3. 一切

如果出于某种原因无法将事务保存到数据库中,那么 MSMQ 可能会在这里为您提供帮助。它应该比打开数据库连接和提交更好,但提供了一个“良好”的持久层。缺点是代码更多,应用程序的另一个失败点(并不是说如果编写正确它会失败,而是更多的代码意味着更多的 bug 位置)。

你可以使用类似这样的东西很容易地将你的事务放入队列

private string queuePath = @".\Private$\myQueue";
MessageQueue queue = new MessageQueue(queuePath);

Message message = new Messge();
message.Id = "messageId";
message.Body = "my content";

queue.Send(message, transaction);
transaction.Complete();
queue.Close();

然后通过查询属性检索它们:MSMQ querying for a specific message .还有许多开箱即用的其他功能,但要保持简单。

一些相关问题:

关于c# - MSMQ 用于持久性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8030280/

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