我计划将微服务架构用于项目.所选择的技术堆栈.NET Core与Docker和RabbitMQ作为一个简单的服务总线,这应该能够部署上Linux.
假设我有一个Payment服务和一个Order服务,我希望每个服务都公开REST端点.因此,我想把这两项服务作为.NET Core Web APIs.
但问题是使用的跨服务通信RabbitMQ.每当我得到一个新的order,我想发布一个事件RabbitMQ,然后在Payment服务中监听该事件,以执行某些操作(数据库更新).但是既然如此Web APIs,我认为听不到我所描述的事件是可能的.(我觉得我可能不得不使用类似控制台应用程序的东西订阅事件.)
考虑到系统的可扩展性和可扩展性,我想找到最可行的方法来实现这一点.
我正在尝试掌握 ServiceBus 架构,并且我正在使用 RawRabbit 1.10.4。为此,我正在学习使用 RawRabbit 的在线课程。在命令处理程序的注册中,创建了以下扩展方法,其中调用了 Methoc ctx.UseConsumerConfiguration。
扩展方法应该位于 RawRabbit.Pipe 命名空间中,但该命名空间不可用。我需要安装什么 nuget 包才能获取扩展方法,或者此扩展方法/命名空间是否已在版本 1.10.4 中删除?
public static class Extensions
{
public static Task WithCommandHandlerAsync<TCommand>(this IBusClient bus,
ICommandHandler<TCommand> handler)
where TCommand : ICommand
=> bus.SubscribeAsync<TCommand>(msg => handler.HandleAsync(msg),
ctx => ctx.UseConsumerConfiguration(cfg => cfg.FromDelaredQueue(q => q.WithName("XXX"))));
}
Run Code Online (Sandbox Code Playgroud)