如何使用“Actor Reminder”机制在服务结构中安排任务?

时间:2017-06-19 15:45:40

标签: c# azure-service-fabric service-fabric-actor

我想每天,每周和每月生成发票,并希望定期发送发票。 每个客户都有不同的发票设置。

3 个答案:

答案 0 :(得分:1)

前段时间我想知道自己该怎么做。基于优秀的documentation,我想出了一个示例应用,请参阅我的repo

您的演员应该实现IRemindable界面。 要创建提醒,请在actor方法中使用它:

await RegisterReminderAsync(
            "MyReminder", // name of the reminder
            Encoding.ASCII.GetBytes(message), // byte array with payload (message is a string in my case)
            dueTime, // When is the reminder first activated
            snoozeTime); // Interval between activations

在您的情况下,将snoozeTime设置为一天或一周,以便每个时段都启动提醒。

当到期时间时,调用方法ReceiveReminderAsync

public Task ReceiveReminderAsync(string reminderName, byte[] state, TimeSpan dueTime, TimeSpan period)
{
    ActorEventSource.Current.Message($"Actor recieved reminder {reminderName}.");

    ...
}

您可以通过ReceiveReminderAsync的值来告知它的提醒,您可以使用state的内容来处理有效负载。

要关闭提醒,请使用UnregisterReminderAsync方法:

await UnregisterReminderAsync(GetReminder("MyReminder"));  

答案 1 :(得分:0)

def Rank():
  #Declare List
  RankList=[]
  #Opening and reading the file
  with open('GolfInfo.txt','rU', newline='') as csvfile:
        reader=csv.reader(csvfile)
        for row in reader:
              #Data added to list if not blank.
              if row:  # ADDED TEST!
                    RankList.append(row)
  #List is sorted by amount of strokes taken (Total) from lowest to highest
  RankList.sort()
  ...

答案 2 :(得分:-1)

对于计划任务,您可以使用hangfire等外部机制。

它执行除Web应用程序之外的计划任务,您可以从其任务仪表板跟踪任务。

您可以注册如下作业:

PrimeLucy