PIK*_*IKP 10 c# asp.net-web-api microservices .net-core rawrabbit
我计划将微服务架构用于项目.所选择的技术堆栈.NET Core与Docker和RabbitMQ作为一个简单的服务总线,这应该能够部署上Linux.
假设我有一个Payment服务和一个Order服务,我希望每个服务都公开REST端点.因此,我想把这两项服务作为.NET Core Web APIs.
但问题是使用的跨服务通信RabbitMQ.每当我得到一个新的order,我想发布一个事件RabbitMQ,然后在Payment服务中监听该事件,以执行某些操作(数据库更新).但是既然如此Web APIs,我认为听不到我所描述的事件是可能的.(我觉得我可能不得不使用类似控制台应用程序的东西订阅事件.)
考虑到系统的可扩展性和可扩展性,我想找到最可行的方法来实现这一点.
And*_*nov 11
使用.NET Core创建应用程序时,可以在Main方法中引导程序,然后在Startup类中注册服务和中间件.因此,在启动Web主机之前,您还可以创建和启动消息传递服务:
public class MessageListener
{
public void Start()
{
// Listen to rabbit QM and all the things.
}
}
public static void Main(string[] args)
{
// Listen to messages.
var messaging = MessageListener();
messaging.Start();
// Configure web host and start it.
var host = new WebHostBuilder()
...
.Build();
host.Run();
}
Run Code Online (Sandbox Code Playgroud)
更新:
在ASP.NET Core 2.0 IHostedService中引入了接口来实现相同的目标,他们在公告中提到了这个场景.以下是如何实现一个示例.
| 归档时间: |
|
| 查看次数: |
8260 次 |
| 最近记录: |