将控制台应用程序转换为Azure触发器的最佳方法是什么

时间:2018-08-28 20:12:36

标签: c# .net azure azure-functions

我有一个控制台应用程序,该应用程序运行并监视Azure服务总线队列。我具有的函数接受Message类并对其进行处理。该应用程序会注册该功能。

现在,我需要将其转换为在消息进入消息总线队列时运行。

我看到的所有示例都显示了带有静态方法的静态类,其中某些参数由属性修饰。它显示正在发送的消息是字符串。

但是我的方法有一个Message类发送给它。

如果我想使用与azure函数应用相同的应用,该怎么办?

2 个答案:

答案 0 :(得分:2)

重用旧应用程序的逻辑

您当然不能使用控制台应用程序本身作为您的Azure Functions应用程序... Azure Functions是它自己的运行时和执行框架。也就是说,您可以通过控制台应用程序重用大多数 logic ,而只需进行少量调整即可。

由于您说的是使用Message类,因此我假设您使用的是.NET Core ServiceBus库。如果是这样,则应使用Azure Functions v2运行时。如果您将旧的完整框架ServiceBus库与 BrokeredMessage 类一起使用,则需要坚持使用Functions v1运行时。

Azure函数中的“绑定”非常灵活,并且通常知道如何提供所需的内容。您可能会看到这样的示例:

[FunctionName("NewSbMessageArrivedFunction")]                    
public static void Run(
    [ServiceBusTrigger("someQueue")] string queueMessage, TraceWriter log)
{
    ...
}

实际上,您可以仅将本示例中的 queueMessage 参数从string更改为Message(或v1中的BrokeredMessage),并更改运行时将看到不同的签名,并应为您填充消息对象!

有关此方法的工作原理以及可以为ServiceBus触发器绑定的其他属性的更多详细信息,请查看Azure Functions ServiceBus Bindings上的文档。

答案 1 :(得分:0)

我建议重新使用逻辑并创建一个新的Azure函数项目的已接受答案。但是,作为替代,您可以使用Azure函数来调用在VM中运行的可执行文件。

https://azure.microsoft.com/en-au/resources/samples/functions-dotnet-migrating-console-apps/