我正在将分布式架构从Python迁移到.NetCore。该架构具有一个网关API,可将请求推送到服务总线(KAFKA)。请求由微服务处理。这些微服务在请求对象中设置的主题上回答网关(然后是客户端)。 主题名称是基于python应用程序(Flask / uwsgi)的process_id构建的。
但是使用.NetCore Webapi应用程序,我无法找到一种方法来获取主题'从它的过程(我开始在.NetCore)。使用Async方法在等待微服务答案时释放入口点,最好是根据程序集ID的类型生成主题名称。但是每个Asyc方法调用都会生成不同的主题,对吧?这将引发大量话题......有点奇怪......
你还有其他方法可以继续吗?
我正在考虑使用MemoryCache来包装来自微服务和网关进程的答案之间的通信。 (该请求将包含一个Guid,用作内存缓存访问的密钥)。你觉得怎么样?
答案 0 :(得分:0)
此代码输出相同的数字,因此任务会继承主进程的process_id。 thread_id可能不同。
您可能还考虑使用GUID,而不是process_id。只是一个想法。
using System;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class s
{
public s() { }
static void Main(string[] args)
{
Console.WriteLine(System.Diagnostics.Process.GetCurrentProcess().Id);
Task.Run(async () => { bool x = await Go(); }).GetAwaiter().GetResult(); ;
}
private static Task<bool> Go()
{
Console.WriteLine(System.Diagnostics.Process.GetCurrentProcess().Id);
return Task.FromResult<bool>(false);
}
}
}