我有一个控制台应用程序,该应用程序运行并监视Azure服务总线队列。我具有的函数接受Message类并对其进行处理。该应用程序会注册该功能。
现在,我需要将其转换为在消息进入消息总线队列时运行。
我看到的所有示例都显示了带有静态方法的静态类,其中某些参数由属性修饰。它显示正在发送的消息是字符串。
但是我的方法有一个Message类发送给它。
如果我想使用与azure函数应用相同的应用,该怎么办?
答案 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/