我是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));
}
从我发布的代码中,有哪些我做错了吗?
答案 0 :(得分:0)
来自代码
activator
您的订阅者似乎几乎会立即处置IBus
,从而停止总线。
这个假设非常适合您遇到的行为,只处理队列中的前几条消息。
您应该在运行应用程序的整个持续时间内将激活器实例(或者如果您愿意,返回mov [name], dword 'Nuhas'
)保持为单身,然后在关闭时将其丢弃。