背景
通知服务有一个Notify方法,它在事件发生时被调用,所以我在这里创建FloorActor并将包含数据和发布网址的消息发送给Actor。
public class NotificationService
{
//HttpClient client = new HttpClient();
ActorSystem notificationSystem = ActorSystem.Create("NotificationSystem");
public void Notify(int clientID, FloorEventData data)
{
try
{
string postUrl = "http://localhost:6001";
FloorData floorData = new FloorData() { Data = data,PostURL=postUrl };
//This commented line of code post data and listener gets the POST request
//client.PostAsJsonAsync<FloorEventData>(postUrl, data);
//Create Floor Actor
var floorActor = notificationSystem.ActorOf<FloorActor>("floorActor");
floorActor.Tell(data);
}
catch (Exception exception)
{
//Log exception
}
}
}
Floor Actor数据的ReceiveAsync方法只是将事件数据发布到指定的URL。用于实现Actor模型的框架:Akka.Net
public class FloorActor : ReceiveActor
{
HttpClient client = new HttpClient();
public FloorActor()
{
ReceiveAsync<FloorData>(floorActor => client.PostAsJsonAsync<FloorEventData>(floorActor.PostURL, floorActor.Data));
}
}
期 - 当我调试问题时,代码流按预期工作: - 1)事件发生时调用Notify方法 2)Notify方法创建Floor Actor并发送数据 3)调用Floor Actor的ReceiveAsync方法,并且执行代码行没有任何错误或异常。但是POST监听器,没有得到POST数据请求,所以不确定发生了什么?
直接从Notify方法尝试POST数据,侦听器获取POST请求。您可以在Notify方法中看到上面评论的这段代码片段。
因此,当我尝试从我的Actor的Receive方法中发布数据时,Http侦听器无法获取请求,并且没有错误或异常。 如果我需要改变什么,请告诉我?
答案 0 :(得分:0)
应将ActorSystem视为整个系统的单例。所以把那个实例放在一个静态的地方并从那里引用它。
还尝试在client.PostAsJsonAsync
上等待