Rebus停止从天蓝色服务总线获取消息。从100条消息中只有5条我可以获取

时间:2017-04-26 17:24:53

标签: azureservicebus rebus

我是rebus的新人。

我从头开始构建了pub / sub示例。现在我在订阅者中收到消息。

我面临的问题是我发布了100条消息,然后突然在我启动订阅服务时,它只获得了100条消息中的5条。

Windows服务执行5次异步任务然后熄灭。我做错了吗?

我的订阅者配置如下所示:

using (var activator = new BuiltinHandlerActivator()) { 
    activator.Register(() => new TestMessageHandler()); 

    Configure.With(activator) 
        .Transport(t => t.UseAzureServiceBus(Constants.connectionString, Constants.subQueue)) 
        .Routing(r => r.TypeBased().MapAssemblyOf<TestMessage>(Constants.pubQueue)‌​) 
        .Start();

    activator.Bus.Subscribe<TestMessage>().Wait(120000); 
}

我的处理程序如下所示:

public async Task Handle(TestMessage message) { 
    var message = string.Format("name: {1} and source name {2} {0} using the warp as a transport {0}", Environment.NewLine, message.Name , message.SourceName);

    await Task.Run(() => Logger(message));
}

private void Logger(TestMessage message) {
    Console.WriteLine(message.ToString(false));
}

从我发布的代码中,有哪些我做错了吗?

1 个答案:

答案 0 :(得分:0)

来自代码

activator

您的订阅者似乎几乎会立即处置IBus,从而停止总线。

这个假设非常适合您遇到的行为,只处理队列中的前几条消息。

您应该在运行应用程序的整个持续时间内将激活器实例(或者如果您愿意,返回mov [name], dword 'Nuhas')保持为单身,然后在关闭时将其丢弃。