我正在测试.NET Core 2.0应用程序,该应用程序使用Service Bus SDK从事件中心检索消息。我设置了一个控制台应用程序,并打算将该应用程序作为Docker容器运行。
此方法创建将读取消息的事件主机处理器:
private static async Task MainAsync(string[] args)
{
Console.WriteLine("Registering EventProcessor...");
var eventProcessorHost = new EventProcessorHost(
EhEntityPath,
PartitionReceiver.DefaultConsumerGroupName,
EhConnectionString,
StorageConnectionString,
StorageContainerName);
// Registers the Event Processor Host and starts receiving messages
Console.WriteLine("Retrieving messages");
await eventProcessorHost.RegisterEventProcessorAsync<EventProcessor>();
Console.WriteLine("Sleeping");
Thread.Sleep(Timeout.Infinite);
}
由于类EventProcessor
中实现的事件处理器将是处理事件的事件处理器,我试图阻止控制台应用程序在处理器注册完成时退出。
然而,我无法找到一种可靠的方法来保持应用程序的活力。如果我按原样运行此容器,我在输出窗口中看到的只有:
Registering EventProcessor...
Retrieving messages
Sleeping
并且没有收到任何消息。
答案 0 :(得分:10)
感谢大家的建议。
我遵循了这些文章但最终以此结束,这特别适用于.NET Core应用程序:
https://github.com/aspnet/Hosting/issues/870
我已经对它进行了测试,当应用程序从Docker运行时收到终止信号时,它可以正常关闭。
更新:这是上面GH问题链接的相关示例:
display: none;