0

是否可以通过在服务总线上运行的 MassTransit 为消息传递设置重复计划?

如果是这样,是否有任何示例代码可用?

还是构建一个类似于 Quartz Scheduler 服务但以 Azure Scheduler 为目标的服务更好?

4

1 回答 1

0

如果您使用的是 Azure,您有三个选项,

  1. Azure 逻辑应用(替换 Azure 调度程序 - 阅读此处
  2. Azure 函数
  3. 网络工作

在 Azure 逻辑应用中,您可以构建工作流以通过“重复”触发器迁移日期。

在 Azure Functions 中,您可以使用 Timer Trigger 并使用 Azure Service Bus SDK / REST API编写自己的逻辑。您可以在此处找到有关 C# 脚本的 Timer Trigger 的更多信息,但您也可以使用 JS、F# 等。如果您使用 Azure Function,如果计划时间是每 5 分钟一次,function.json则将编码如下

{
    "schedule": "0 */5 * * * *",
    "name": "myTimer",
    "type": "timerTrigger",
    "direction": "in"
}

该函数的代码将如下所示

public static void Run(TimerInfo myTimer, ILogger log)
{
    const string ServiceBusConnectionString = "<your_connection_string>";
    const string QueueName = "<your_queue_name>";
    static IQueueClient queueClient

    if (myTimer.IsPastDue)
    {
        log.LogInformation("Timer is running late!");
    }
    queueClient = new QueueClient(ServiceBusConnectionString, QueueName);

    // Your logic to read to write message
}

我正在使用用于 Azure 服务总线的 .NET SDK,您可以在此处找到参考。如果你是 Azure Functions 的新手,C# 脚本函数的工作方式会略有不同。引用 dll 的方法是不同的。你可以在这里找到它。

对于 Azure Web Jobs,它作为 Azure Web 应用程序的一部分运行。对于 Azure Web 作业,您也可以使用控制台应用程序模板编写 Web 作业。您也可以使用上述相同的 Azure 服务总线 SDK 来开发 Web 作业。在此处查找 Azure Web Jobs 的文档。

于 2019-04-01T06:23:55.790 回答