如何在单个Azure Function中通过Service Bus消息触发Azure Function并向Service Bus输出消息

问题描述

我需要基于Service Bus消息触发Azure函数,该消息将执行某些逻辑,并将某些消息写回到Service Bus,这可能会触发另一个Azure函数,等等。

我不了解如何以标准方式正确进行操作。

基于此文档Azure Service Bus trigger for Azure Functions,我们可以做第一部分:通过服务总线消息触发天蓝色功能。

代码:

@FunctionName("sbtopicprocessor")
    public void run(
        @ServiceBusTopicTrigger(
            name = "message",topicName = "mytopicname",subscriptionName = "mysubscription",connection = "ServiceBusConnection"
        ) String message,final ExecutionContext context
    ) {
        context.getLogger().info(message);
    }

基于此文档Azure Service Bus output binding for Azure Functions,我们可以做第二部分:触发输出消息到服务总线。

代码:

@FunctionName("sbtopicsend")
    public HttpResponseMessage run(
            @HttpTrigger(name = "req",methods = {HttpMethod.GET,HttpMethod.POST},authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Optional<String>> request,@ServiceBusTopicOutput(name = "message",connection = "ServiceBusConnection") OutputBinding<String> message,final ExecutionContext context) {
        
        String name = request.getBody().orElse("Azure Functions");

        message.setValue(name);
        return request.createResponseBuilder(HttpStatus.OK).body("Hello," + name).build();
        
    }

但是我需要在一个功能中同时具有输入/输出功能吗?我应该通过http从第一个函数调用第二个函数,这对我来说似乎有点尴尬,还是我应该在拳头函数中使用Service bus sdk。

感谢您的帮助。

解决方法

我不使用Java,但是您可以将Trigger和Output组合在一个函数中。

@FunctionName("sbtopicprocessor")
public void run(
    @ServiceBusTopicTrigger(
        name = "message",topicName = "mytopicname",subscriptionName = "mysubscription",connection = "ServiceBusConnection"
    ) String messageRequest,@ServiceBusTopicOutput(name = "message",connection = "ServiceBusConnection") OutputBinding<String> message,final ExecutionContext context
) {
    message.setValue(messageRequest.name);
}

您可以在一个功能中组合任何类型的触发器和任何类型的输出。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...