标签: rawrabbit

使用RabbitMQ的.NET核心微服务

我计划将微服务架构用于项目.所选择的技术堆栈.NET Core与Docker和RabbitMQ作为一个简单的服务总线,这应该能够部署上Linux.

假设我有一个Payment服务和一个Order服务,我希望每个服务都公开REST端点.因此,我想把这两项服务作为.NET Core Web APIs.

但问题是使用的跨服务通信RabbitMQ.每当我得到一个新的order,我想发布一个事件RabbitMQ,然后在Payment服务中监听该事件,以执行某些操作(数据库更新).但是既然如此Web APIs,我认为听不到我所描述的事件是可能的.(我觉得我可能不得不使用类似控制台应用程序的东西订阅事件.)

考虑到系统的可扩展性和可扩展性,我想找到最可行的方法来实现这一点.

c# asp.net-web-api microservices .net-core rawrabbit

10
推荐指数
1
解决办法
8260
查看次数

由于第 3 方依赖项,单文件 .NET 5 项目发布错误

目前,在 anetcoreapp3.1和 I\xe2\x80\x99m 上尝试升级到.net5. 编译期间没有问题,但在 Docker 中运行时,我得到:

\n
\n

System.NotSupportedException:从单文件包加载的程序集不支持 CodeBase。

\n
\n

我知道它发布在这里:

\n
\n

建议操作

\n

作为单个文件发布时,避免依赖于程序集的文件位置。

\n
\n

但我使用RawRabbit \xe2\x80\x99m ,它已经不活动了。我还挖掘了源代码,发现只有一个地方调用了已弃用的API

\n

我当前的解决方法是不发布单个文件,但我是否已经绝望了?

\n

c# rawrabbit .net-5

5
推荐指数
1
解决办法
4106
查看次数

RawRabbit.Pipe 命名空间

我正在尝试掌握 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)

c# rawrabbit

4
推荐指数
1
解决办法
989
查看次数