部署到 Azure 时未调用 MessageHandlers
MessageHandlers not invoked when deployed to Azure
我有一个使用 Rebus 库通过 Azure ServiceBus 接收消息的应用程序。
当应用程序 运行 在 Azure 上作为 Web 应用程序时,与我 运行 在本地时相比,我观察到不同的行为。
当它 运行 在 Azure 中时,我的消息处理程序没有被调用。
当应用程序 运行 在本地时,一切都按预期工作。
这是我的设置。
在我的 web 项目 Portal 中,Global.asax.cs:
protected void Application_Start()
{
_webContainer = new WindsorContainer();
_queueContainer = new WindsorContainer();
ConfigureWebContainer();
_queueContainer.Install(FromAssembly.Containing<ServiceBusInstaller>());
ApplicationInsightsConfig.Configure();
}
在ServiceBus项目中(ServiceBusInstaller所在)
public void Install(IWindsorContainer container, IConfigurationStore store)
{
var adapter = new CastleWindsorContainerAdapter(container);
var connectionString = CloudConfigurationManager.GetSetting("QueueUrl");
var configurer = Configure
.With(adapter)
.Options(o =>
{
o.SimpleRetryStrategy(maxDeliveryAttempts: 0);
})
.Logging(l => l.Log4Net())
.Routing(r => r.TypeBased()
.MapAssemblyOf<ResetPasswordMessage>("Email"))
Transport(t => t.UseAzureServiceBus(connectionString, "Email"));
// Create and starts the bus
configurer.Start();
}
我的 ResetPasswordHandler 如下所示:
public class ResetPasswordHandler : IHandleMessages<ResetPasswordMessage>
{
private readonly IContactAndEmailService _contactAndEmailService;
public ResetPasswordHandler(IContactAndEmailService contactAndEmailService)
{
_contactAndEmailService = contactAndEmailService;
}
public async Task Handle(ResetPasswordMessage message)
{
_contactAndEmailService.SendEmail(message);
}
}
我正在使用服务总线资源管理器连接到服务总线,我可以看到消息在 "email" 队列中。但是它确实留在那里,因此不会被消耗。
非常感谢任何指向设置或 azure 订阅限制或其他可以帮助我前进的指示。
我认为这可能与队列名称的大小写有关,Email
。
你能试着把它改成小写吗?
我有一个使用 Rebus 库通过 Azure ServiceBus 接收消息的应用程序。
当应用程序 运行 在 Azure 上作为 Web 应用程序时,与我 运行 在本地时相比,我观察到不同的行为。
当它 运行 在 Azure 中时,我的消息处理程序没有被调用。 当应用程序 运行 在本地时,一切都按预期工作。
这是我的设置。
在我的 web 项目 Portal 中,Global.asax.cs:
protected void Application_Start()
{
_webContainer = new WindsorContainer();
_queueContainer = new WindsorContainer();
ConfigureWebContainer();
_queueContainer.Install(FromAssembly.Containing<ServiceBusInstaller>());
ApplicationInsightsConfig.Configure();
}
在ServiceBus项目中(ServiceBusInstaller所在)
public void Install(IWindsorContainer container, IConfigurationStore store)
{
var adapter = new CastleWindsorContainerAdapter(container);
var connectionString = CloudConfigurationManager.GetSetting("QueueUrl");
var configurer = Configure
.With(adapter)
.Options(o =>
{
o.SimpleRetryStrategy(maxDeliveryAttempts: 0);
})
.Logging(l => l.Log4Net())
.Routing(r => r.TypeBased()
.MapAssemblyOf<ResetPasswordMessage>("Email"))
Transport(t => t.UseAzureServiceBus(connectionString, "Email"));
// Create and starts the bus
configurer.Start();
}
我的 ResetPasswordHandler 如下所示:
public class ResetPasswordHandler : IHandleMessages<ResetPasswordMessage>
{
private readonly IContactAndEmailService _contactAndEmailService;
public ResetPasswordHandler(IContactAndEmailService contactAndEmailService)
{
_contactAndEmailService = contactAndEmailService;
}
public async Task Handle(ResetPasswordMessage message)
{
_contactAndEmailService.SendEmail(message);
}
}
我正在使用服务总线资源管理器连接到服务总线,我可以看到消息在 "email" 队列中。但是它确实留在那里,因此不会被消耗。
非常感谢任何指向设置或 azure 订阅限制或其他可以帮助我前进的指示。
我认为这可能与队列名称的大小写有关,Email
。
你能试着把它改成小写吗?