可以使用注入的方式创建proxy,ActorController中注入IActorProxyFactory
private readonly IActorProxyFactory _actorProxyFactory;
public ActorController(IActorProxyFactory actorProxyFactory)
{
_actorProxyFactory = actorProxyFactory;
}
新增获取数据接口
[HttpGet("get/{orderId}")]
public async Task<ActionResult> GetAsync(string orderId)
{
var proxy = _actorProxyFactory.CreateActorProxy<IOrderStatusActor>(
new ActorId("myid-" + orderId),
"OrderStatusActor");
return Ok(await proxy.GetStatus(orderId));
}
使用Actor基类的 RegisterTimerAsync
方法计划计时器。在OrderStatusActor类中新增方法
public Task StartTimerAsync(string name, string text)
{
return RegisterTimerAsync(
name,
nameof(TimerCallbackAsync),
Encoding.UTF8.GetBytes(text),
TimeSpan.Zero,
TimeSpan.FromSeconds(3));
}
public Task TimerCallbackAsync(byte[] state)
{
var text = Encoding.UTF8.GetString(state);
_logger.LogInformation($"Timer fired: {text}");
return Task.CompletedTask;
}
StartTimerAsync
方法调用 RegisterTimerAsync
来计划计时器。 RegisterTimerAsync
采用五个参数:
TimeSpan.FromMilliseconds(-1)
禁用定期信号。原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。