NServicebus DataBus

时间:2012-01-30 14:01:56

标签: nservicebus

我需要移动一些大文件,我想使用NserviceBus,因为文件不会保留在系统上。我一直在尝试使用第3版中的新数据总线功能来启动和运行。 文件在一个进程中生成,然后传递到总线上。我的问题是我无法启动公交车。我在下面有一个示例应用程序基本上反映了我的设置,除了在“真实”应用程序中,总线存在于不同的应用程序中(还没有推送到服务器,所以我只运行一个开发实例)

    #region Declarations

    private IBus Bus { get; set; }

    #endregion

    #region Constructors

    public Sender()
    {       
        if (Directory.Exists(BasePath))
        {
            Bus = Configure.Instance
                .FileShareDataBus(BasePath)
                .UnicastBus().DoNotAutoSubscribe()
                .CreateBus()
                .Start();
        }
    }

    #endregion

    #region Methods

    public void SendMessage()
    {
        // get a list of file names
        List<string> fileList = Directory.GetFiles(@"c:\test\").ToList();


        Bus.Send<GenericListMessage>(message =>
                                        {
                                            message.Name = "TEST";
                                            message.FileList = new DataBusProperty<List<string>>(fileList);
                                        });
    }
    #endregion

我的EndpointConfig.cs看起来像这样:

public class EndpointConfig : IConfigureThisEndpoint, AsA_Client 
{
}

internal class SetupDataBus : IWantCustomInitialization
{
    public static string BasePath = @"c:\storage\";

    public void Init()
    {
        Configure.Instance
            .FileShareDataBus(BasePath)
            .UnicastBus()
            .DoNotAutoSubscribe();
    }
}

我已经在Sender类中更改了我的代码以发送非Databus消息和一条简单的消息,这很好用。但是当我尝试使用它发送Databus消息时,我不断为总线获取NullReferenceException。如果有人能给我指针,我会非常感激。

1 个答案:

答案 0 :(得分:1)

您需要更改

私人IBus巴士{get;组; }

为:

公共IBus巴士{get;组; }

为公共汽车进行依赖注射。