首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure部署问题中的NServiceBus

Azure部署问题中的NServiceBus
EN

Stack Overflow用户
提问于 2015-02-24 10:15:01
回答 1查看 673关注 0票数 1

我在将我的服务部署到云中时遇到了一些困难。更准确地说,使用NServiceBus与Azure。我已经重复了我的步骤3次(创建了相同的项目3次)和相同的结果,所以我真的希望有人能指出我在正确的方向。

更新-> 24/02/2014

将post中提到的程序集降级到5.1.3版本,现在部署工作正常,并创建队列。也许在最新版本中有什么东西会导致部署失败。

首先,我使用Portal创建了我的先决条件:

  • 名为折扣的云服务
  • 名为折扣的存储帐户
  • 名为discountbus Bus 的服务总线

以上3项都是使用Quick创建的。

回到Visual中,创建:

  • 题为AzureTest的新解决方案
  • 名为AzureTest的新云服务项目
  • 名为“折扣”的新员工角色项目

通过nuget引用下列程序集:

  • NServiceBus 5.2.0
  • NServiceBus.Azure 6.2.0
  • NServiceBus.Hosting.Azure 6.2.0
  • NServiceBus.Azure.Transports.WindowsAzureServiceBus 6.2.0

添加了一个名为邮件的新程序集,该程序集将包含要发布的命令和事件。

将云服务项目(AzureTest)中的设置更改为:

代码语言:javascript
复制
<Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString"/>

我的EndpointConfig看起来像:

代码语言:javascript
复制
public class EndpointConfig : IConfigureThisEndpoint, AsA_Worker
{
    public void Customize(BusConfiguration configuration)
    {
        // Nothing too complicated for now, just anything where the namespace contains commands or events
        configuration.Conventions().DefiningCommandsAs(x => x.AssemblyQualifiedName != null && x.AssemblyQualifiedName.Contains(".Commands."));
        configuration.Conventions().DefiningEventsAs(x => x.AssemblyQualifiedName != null && x.AssemblyQualifiedName.Contains(".Events."));

        configuration.UseTransport<AzureServiceBusTransport>();
        configuration.UsePersistence<AzureStoragePersistence>();

        // Docs don't state to do this however logs show this is required
        configuration.DisableFeature<TimeoutManager>();
        configuration.DisableFeature<SecondLevelRetries>();
        configuration.DisableFeature<Sagas>();
    }
}

WorkerRole只是尝试启动和停止NServiceBusRole:

代码语言:javascript
复制
public class WorkerRole : RoleEntryPoint
{
    private NServiceBusRoleEntrypoint nsb = new NServiceBusRoleEntrypoint();

    public override bool OnStart()
    {
        Trace.TraceInformation("Discount has been started");

        nsb.Start();

        return base.OnStart();
    }

    public override void OnStop()
    {
        Trace.TraceInformation("Discount has stopped");

        nsb.Stop();

        base.OnStop();
    }
}

ServiceConfiguration.Cloudcscfg包含:

代码语言:javascript
复制
<ConfigurationSettings>
  <Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="DefaultEndpointsProtocol=https;AccountName=discount;AccountKey=[my key]" />
</ConfigurationSettings>

NSB的配置部分:

代码语言:javascript
复制
  <MessageForwardingInCaseOfFaultConfig ErrorQueue="error" />
  <TransportConfig MaximumConcurrencyLevel="5" MaxRetries="2" MaximumMessageThroughputPerSecond="0" />
  <UnicastBusConfig>
    <MessageEndpointMappings>
      <add Assembly="Messages" Type="Messages.Commands.TestCommand" Endpoint="Discount" />
    </MessageEndpointMappings>
  </UnicastBusConfig>
  <connectionStrings>
    <add name="NServiceBus/Transport" connectionString="Endpoint=sb://discountbus.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=[my key]" />
  </connectionStrings>

当我试图通过右键单击云服务项目进行部署并发布时,我会得到以下反馈:

09:34:29 -应用诊断学扩展。 09:34:50 -为AzureTest - 24/02/2015准备部署09:34:20与订阅ID 'e3dbff72-f1c1-43c8-b052-3404ea5c168e‘使用服务管理URL’https://management.core.windows.net/‘. 09:34:50 -连接. 09:34:50 -核实存储账户的折扣. 09:34:50 -上传包裹. 09:34:56 -创造. 09:35:28 -创建的部署ID: e464ba5932fc402faf6945e8a983b52e。 09:35:28 -角色折扣的实例0被停止 09:35:28 -开始. 09:35:45 -启动. 09:35:45 -角色折扣的实例0处于未知状态。 09:36:18 -角色折扣的实例0正在创建虚拟机。 09:37:23 -角色折扣的实例0正在启动虚拟机 09:39:33 -角色折扣的实例0处于未知状态。 09:40:06 -角色折扣的实例0很忙 细节:准备开始角色..。系统正在初始化。2015-02-24T09:39:43Z 09:42:10 -角色折扣的实例0正在重新启动详细信息:角色遇到错误并已停止。系统初始化成功。2015-02-24T09:41:57 z 09:44:14 -角色折扣的实例0是繁忙的细节:恢复角色.系统在

也尝试过在本地调试,将云服务项目设置为启动,但得到了一个错误,声明:

“'System.Configuration.ConfigurationErrorsException‘类型的未处理异常发生在WaWorkerHost.exe中。”遗憾的是,没有提供进一步的细节。

服务器资源管理器显示我的存储空间,但只显示Metrics表。

希望有人能给我指路,告诉我哪里出了问题。现在对所有这些都很感情用事,并试图做这个简单的项目近3天:

干杯,DS。

EN

回答 1

Stack Overflow用户

发布于 2015-02-26 09:34:03

为了更好地确定在azure中发生的异常,您应该尝试使用智能调试(我认为现在称为历史调试)来调试它。

但我的直觉是,您没有指定要使用哪个存储帐户用于启用的天蓝色存储持久性。

如果你坚持,不要犹豫,给我一份你的测试项目的副本,我会看看它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28693063

复制
相关文章

相似问题

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