我试图创建一个真正基本的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 回答
看起来NServiceBus默认使用RavenDB进行订阅存储 . 通过指定备用存储机制,我能够使这个示例正常工作 .
并在app.config中