首页 文章

没有ravenDB的NServiceBus基本消息发布者

提问于
浏览
2

我试图创建一个真正基本的NServicebus.Host应用程序,它每秒发送一条消息 . 我不想使用任何使用RavenDB的NServiceBus持久性东西(即timeouts / sagas) .

我做了以下事情:

public class EndpointConfig : IConfigureThisEndpoint, AsA_Server, AsA_Publisher, IWantCustomInitialization
{
    public void Init()
    {
        Configure.With()
            .DisableTimeoutManager();
    }
}

public class MessageSender : IWantToRunWhenTheBusStarts
{
    private readonly IBus _bus;

    public MessageSender(IBus bus)
    {
        _bus = bus;
    }

    public void Run()
    {
        Task.Factory.StartNew(() =>
        {
            while (true)
            {
                _bus.Publish(new MyMessage { Timestamp = DateTime.Now });
                Thread.Sleep(1000);
            }
        });
    }
}

但是我在发布行上遇到异常:

System.Net.WebException是由用户代码未处理的HResult = -2146233079消息=无法连接到远程服务器源=系统堆栈跟踪:在System.Net.HttpWebRequest.GetResponse()在Raven.Client.Connection.HttpJsonRequest.ReadStringInternal( func1的GETRESPONSE)在Raven.Client.Connection.HttpJsonRequest.ReadResponseString()在Raven.Client.Connection.HttpJsonRequest.ReadResponseJson()在Raven.Client.Connection.ServerClient.DirectGet(字符串的serverUrl,String键)在Raven.Client.Connection .ServerClient . <> c__DisplayClass1 . <获取>在Raven.Client.Connection.ServerClient.TryOperation [T](FUNC2操作,字符串operationUrl,布尔avoidThrowing,T&结果)在Raven.Client.Connection.ServerClient b__0(字符串U) . ExecuteWithReplication [T](字符串方法,FUNC2操作)在Raven.Client.Connection.ServerClient.Get(String键)在Raven.Client.Document.DocumentSession.Load [T](字符串ID)在System.Linq.Enumerable.WhereSelectArrayIterator2 System.Linq.Enumerable.WhereEnumerabl中的.MoveNext() eIterator1.MoveNext()在System.Linq.Enumerable . <SelectManyIterator> d__142.MoveNext()在System.Linq.Enumerable.d_811.MoveNext()在System.Collections.Generic.List1..ctor(IEnumerable1集合)在系统 . Linq.Enumerable.ToList [TSource](IEnumerable1 source)位于System.Threading.Tasks.Task.Execute()的ClassLibrary1.MessageSender.b_1()中的NServiceBus.Unicast.UnicastBus.Publish [T](T []消息) InnerException:System.Net.Sockets.SocketException HResult = -2147467259 Message =无法 Build 连接,因为目标计算机主动拒绝它127.0.0.1:8080 Source = System ErrorCode = 10061 NativeErrorCode = 10061 StackTrace:at System.Net.Sockets . Socket.DoConnect( endpoints endPointSnapshot,为SocketAddress的SocketAddress)在System.Net.Sockets.Socket.InternalConnect( endpoints remoteEP)在System.Net.ServicePoint.ConnectSocketInternal(布尔connectFailure,插座s4中,插座S6中,插座和插座,ip地址和地址,ConnectSocketState状态,IAsyncResult asyncResult,异常和异常)

这告诉我,NServiceBus仍在尝试连接到RavenDB .

为了使这个例子有效,还需要禁用什么?

为什么甚至尝试连接到RavenDB进行基本发布?

注意:我还没有订阅者 .

1 回答

  • 3

    看起来NServiceBus默认使用RavenDB进行订阅存储 . 通过指定备用存储机制,我能够使这个示例正常工作 .

    .MsmqTransport()
                    .MsmqSubscriptionStorage()
                .DisableTimeoutManager();
    

    并在app.config中

    <configuration>
        <configSections>
            <section name="MessageForwardingInCaseOfFaultConfig" type="NServiceBus.Config.MessageForwardingInCaseOfFaultConfig, NServiceBus.Core" />
            <section name="MsmqSubscriptionStorageConfig" type="NServiceBus.Config.MsmqSubscriptionStorageConfig, NServiceBus.Core" />
        </configSections>
        <MessageForwardingInCaseOfFaultConfig ErrorQueue="error" />
        <MsmqSubscriptionStorageConfig Queue="YourQueue" />
    </configuration>
    

相关问题