Rebusライブラリを使用してAzure ServiceBus経由でメッセージを受け取るアプリケーションがあります。AzureにデプロイされたときにMessageHandlerが呼び出されない
アプリケーションをAzure上でWebアプリケーションとして実行すると、ローカルで実行したときとは違った動作が観察されます。
Azureで実行すると、メッセージハンドラが呼び出されていません。 アプリケーションがローカルで実行されている場合、すべてが期待通りに機能します。
これは私の設定です。プロジェクトServiceBusで
protected void Application_Start()
{
_webContainer = new WindsorContainer();
_queueContainer = new WindsorContainer();
ConfigureWebContainer();
_queueContainer.Install(FromAssembly.Containing<ServiceBusInstaller>());
ApplicationInsightsConfig.Configure();
}
(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);
}
}
私のWebプロジェクトポータル、Global.asax.csで
サービスバスエクスプローラを使用してservに接続していますアイスバスに乗って、メッセージが「電子メール」キューに入っていることがわかります。しかし、それはそこにとどまるので消費されません。
セットアップまたは紺碧の購読制限のいずれかの指針は、私が前進するのを助けることができます。
奇妙な音...キュー名のスペルを試してみることができますか? – mookid8000
私はちょうどそれをし、実際に働いた。大文字と小文字を区別しないという誤った仮定がありました。どうもありがとう。あなたは答えとして投稿することができ、私はそれを受け入れるでしょう。将来の読者のためだけに。 – AndreasPK