gpt4 book ai didi

c# - 部署到 Azure 时不会调用消息处理程序

转载 作者:行者123 更新时间:2023-12-03 03:11:45 25 4
gpt4 key购买 nike

我有一个应用程序,它使用 Rebus 库通过 Azure ServiceBus 接收消息。

与在本地运行应用程序时相比,当应用程序作为 Web 应用程序在 Azure 上运行时,我观察到不同的行为。

当它在 Azure 中运行时,我的消息处理程序不会被调用。当应用程序在本地运行时,一切都会按预期工作。

这是我的设置。

在我的网络项目门户 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);
}
}

我正在使用 Service Bus Explorer 连接到服务总线,我可以看到该消息位于“电子邮件”队列中。然而它确实留在那里,因此没有被消耗。

任何有关设置或 azure 订阅限制或其他可以帮助我前进的指示都将受到高度赞赏。

最佳答案

我认为这可能与队列名称 Email 的大小写有关。

您能尝试将其全部小写吗?

关于c# - 部署到 Azure 时不会调用消息处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36598171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com