簡體   English   中英

How to trigger both Azure Function by Service Bus message and output message to Service Bus within single Azure Function

[英]How to trigger both Azure Function by Service Bus message and output message to Service Bus within single Azure Function

I need to trigger an Azure Function based on Service Bus message that will do some logic and will write back to Service Bus some message that will potentially trigger another Azure function etc..

我缺乏理解如何以標准方式正確地做到這一點。

Based on this document Azure Service Bus trigger for Azure Functions we can do first part: trigger azure function by Service Bus message.

代碼:

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

Based on this document Azure Service Bus output binding for Azure Functions we can do second part: trigger output message to Service Bus.

代碼:

@FunctionName("sbtopicsend")
    public HttpResponseMessage run(
            @HttpTrigger(name = "req", methods = {HttpMethod.GET, HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Optional<String>> request,
            @ServiceBusTopicOutput(name = "message", topicName = "mytopicname", subscriptionName = "mysubscription", 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();
        
    }

但是我需要一個 function 中的兩個輸入/output 功能? Should I call second function from the first one via http which seems for me a little bit awkward or should I use Service bus sdk within fist function.

謝謝你的幫助。

我不使用 Java,但您可以將觸發器和 Output 組合在一個 function 中。

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

您可以將任何類型的觸發器與任何類型的 Output 組合在一個 function 中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM