我对处理多个连接有疑问。这些连接可以是DB连接,SOA连接,EMS连接等......
假设我有1个数据库连接,我提取数据,我有2个EMS连接,它们都有不同的数据和独立。数据将发送到EMS并更新数据是否成功发送的状态。
1)如果数据库连接断开或者我们无法访问数据库时出现任何其他问题 2)任何1个EMS连接断开,应用程序应继续处理其他EMS连接。 3)如果我们能够向EMS发送数据但是无法更新数据库问题的数据库状态bcos会发生什么,我们假设对内存中的所有消息以及我们需要发送到EMS的内容是什么。 4)无法与1个EMS建立连接,但是其他的能够建立,因此应用程序应该处理该EMS消息。
这些是我必须处理的一些-ve测试用例。如果我有任何其他问题需要解决,请随时告诉我
答案 0 :(得分:1)
与不同来源的多个连接,听起来像System.Transactions的一个很好的解决方案(如果EMS支持这个)。
尝试类似这样的事情,这样所有3个操作都会成功或失败作为一个工作单元。
try
{
using (TransactionScope tran = new TransactionScope())
{
Method1Save(); //DB
Method2Save(); //EMS1
Method3Save(); //EMS2
tran.Complete();
}
}
catch (Exception ex)
{
MessageBox.Show("Problem " + ex.ToString());
}
如果EMS不支持TransactionScope,那么您必须手动处理它,可能是将事务放在连接本身上,然后在操作成功后提交所有事务,这意味着保持连接打开更长时间数据来源。