首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >没有DTC的NServiceBus (AsA_Server)可能吗?

没有DTC的NServiceBus (AsA_Server)可能吗?
EN

Stack Overflow用户
提问于 2011-07-19 21:46:55
回答 4查看 2K关注 0票数 6

我是第一次使用NServiceBus,并且有一个小型、简单的应用程序,其中用户提交一个表单,然后将表单字段发送到队列,处理程序收集这些数据并使用linq- to -sql将其写入数据库。

就数据库管理员而言,组件服务中的任何更改都是完全禁止的,因此我现在正在寻找DTC的替代方案(在DB服务器上没有启用),但是使用AsA_Server,这样消息就不会被清除。

我尝试在IConfigureThisEndpoint之后删除AsA_Server并自己指定配置,但似乎不起作用(控制台出现,页面加载,但什么也没有发生,甚至不会在断点处停止)。AsA_Client确实可以工作,但据我所知,消息将在启动时被清除,这是我需要避免的。

有什么建议吗?

谢谢,

OMK

EDIT:现在已经解决了这个问题,方法是在suppress transaction作用域中包装对数据库的调用,这允许在没有环境事务的情况下完成数据库工作:

代码语言:javascript
复制
using (TransactionScope sc = new TransactionScope(TransactionScopeOption.Suppress)) 
{ 
     // code here 
     sc.Complete(); 
} 
EN

Stack Overflow用户

发布于 2011-09-19 20:25:46

当您使用As (AsA_Client,AsA_Server)接口时,将在Init()之后应用配置,因此您在其中所做的有关MsmqTransport和UnicastBus的所有设置都会被覆盖。

可以在IHandleProfile实现中使用IWantTheConfiguration覆盖这些设置。在应用默认角色之后,但在启动总线之前,您将获得配置。

通过这种方式,您可以更改默认的配置文件设置,并根据您的需要进行定制:停用事务,启用模拟...

示例:

代码语言:javascript
复制
public class DeactivateTransactions : IHandleProfile<Lite>, IWantTheEndpointConfig
{
    private IConfigureThisEndpoint configure;

    public IConfigureThisEndpoint Config
    {
        get { return configure; }
        set
        {
            this.configure = value;

            Configure.Instance.MsmqTransport()
                .PurgeOnStartup(false)
                .IsTransactional(false); // Or other changes
        }
    }

    public void ProfileActivated()
    {
    }
}
票数 5
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6748170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档