启动端点时升级到NServiceBus 3.2.2异常

时间:2012-06-08 17:46:45

标签: c# nservicebus publish-subscribe

我最近使用Nuget将我的发布者/订阅者解决方案升级到NServiceBus版本3.2.2。我的NServiceBus发布者和订阅者都是自托管的。

发布商代码:

我使用NServiceBus.Host.exe启动NServiceBus发布者(调试启动操作 - 在项目属性中启动外部程序)。

的app.config:

<?xml version="1.0" encoding="utf-8"?>
 <configuration>
  <configSections>
    <section name="MsmqTransportConfig" type="NServiceBus.Config.MsmqTransportConfig,  NServiceBus.Core" />
    <section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core" />
    <section name="MessageForwardingInCaseOfFaultConfig" type="NServiceBus.Config.MessageForwardingInCaseOfFaultConfig, NServiceBus.Core" />
  </configSections>
  <MsmqTransportConfig ErrorQueue="error" NumberOfWorkerThreads="1" MaxRetries="5" />
  <UnicastBusConfig ForwardReceivedMessagesTo="">
    <MessageEndpointMappings></MessageEndpointMappings>
  </UnicastBusConfig>
  <MessageForwardingInCaseOfFaultConfig ErrorQueue="error" />
</configuration>

EndpointConfig.cs:

namespace TrackEventPublisher.EventPublisher
{
   [EndpointName("EventPublisher")]
   public class EndpointConfig : IConfigureThisEndpoint, AsA_Publisher
   {
   }
}

运行发布商时遇到以下错误:

启动端点时出现异常,已记录错误。原因:在类型'RavenTimeoutPersistence'上调用构造函数'Void .ctor(Raven.Client.IDocumentStore)'时抛出异常。

堆栈跟踪:

位于d:\ BuildAgent-03 \ work \ nsb.master22 \ src \ hosting \ NServiceBus.Hosting \ GenericHost.cs中的NServiceBus.Hosting.GenericHost.Start():第45行    位于d:\ BuildAgent-03 \ work \ nsb.master22 \ src \ hosting \ NServiceBus.Hosting.Windows \ WindowsHost.cs中的NServiceBus.Hosting.Windows.WindowsHost.Start():第56行    位于d:\ BuildAgent-03 \ work \ nsb.master22 \ src \ hosting \ NServiceBus.Hosting中的NServiceBus.Hosting.Windows.Program。&lt;&gt; c_ DisplayClass8.b _4(Windows主机服务) .Windows \ Program.cs:第95行    在Topshelf.Internal.ControllerDelegates 1.StartActionObject(Object obj) in d:\dev\open-source\topshelf\src\Topshelf\Internal\ControllerDelegates.cs:line 18 at Topshelf.Internal.IsolatedServiceControllerWrapper 1.&lt;&gt; c_ DisplayClass2.b _1(TService服务)在d:\ dev \ open-source \ topshelf \ src \ Topshelf \ Internal \ IsolatedServiceControllerWrapper.cs:第65行    在Topshelf.Internal.ServiceController 1.<.cctor>b__1(ServiceController 1 sc)在d:\ dev \ open-source \ topshelf \ src \ Topshelf \ Internal \ ServiceController.cs:第35行    在Magnum.StateMachine.LambdaAction 1.Execute(T instance, Event event, Object parameter) in :line 0 at Magnum.StateMachine.EventActionList 1.Execute(T stateMachine,Event event,Object parameter)in:line 0

可能导致此错误的原因是什么? 谁能告诉我端点配置有什么问题?

我的解决方案适用于早期版本的NServiceBus(3.0之前的版本)。

更新: 这是内部异常消息:“无法连接到远程服务器”

Raven服务器是否由NServiceBus自动启动?它似乎没有在我的机器上运行......

更新 好吧,由于某种原因RavenDB服务没有在我的机器上运行 - 尽管它被设置为自动启动。我的解决方案现在正常工作。我想我必须以艰难的方式了解RavenDB:)。

有没有人在运行RavenDB服务时遇到问题?

更新

现在我已启动并运行我的服务,我尝试在另一台机器上运行它。 msmq文件夹未创建,我收到RavenDB不可用的错误。实际上,在我在不同的Windows操作系统计算机上运行我的解决方案之后,没有安装RavenDB服务。我尝试运行版本为3.2.2的“RunMeFirst.bat”。但是,bat文件尝试使用visual studio安装扩展。如果安装了visual studio,则会发布另一个错误,但未安装Nuget扩展。

有没有更好的方法来启用NServiceBus.Host.exe来安装RavenDB服务器和msmq文件夹而不在Windows操作系统计算机上安装Visual Studio实例?

更新

哇,大多数更新!我将以下类添加到成功创建msmq文件夹的发布者项目中:

   class MsmqTransportConfigOverride : IWantCustomInitialization, INeedToInstallInfrastructure<Windows>
   {
      public void Init()
      {
       Configure.Instance.ForInstallationOn<NServiceBus.Installation.Environments.Windows>().Install();
      }

      public void Install(System.Security.Principal.WindowsIdentity identity)
      {
      }
   }

这个实现IWantCustomIntialization接口的新类似乎运行良好。但是,我仍然在努力更新我的发布者以在Windows主机上安装RavenDB。我知道有一个命令行提示可以促进这一点,但还有另一种方法吗?我试图实现INeedToInstallInfrastructure接口,但我找不到任何示例。有没有人有任何想法?

1 个答案:

答案 0 :(得分:2)

如果您:我们只运行安装程序: 1.将端点安装为Windows服务(如果在生产配置文件中运行=&gt;默认值) 2.在调试模式下运行 3.在integration / lite配置文件中运行

这样可以解释为什么没有创建队列(假设上述情况都不适用于你?)