如何通过服务总线消息触发Azure功能,并将消息输出到单个Azure功能中的服务总线



我需要基于服务总线消息触发Azure功能,该消息将执行一些逻辑,并将一些可能触发另一个Azure功能等的消息写回服务总线。

我不知道如何以标准的方式正确地做这件事。

基于这个文档,我们可以做第一部分:通过服务总线消息触发Azure功能。

代码:

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

基于此文档,我们可以为Azure函数执行Azure服务总线输出绑定的第二部分:触发到服务总线的输出消息。

代码:

@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();

}

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

谢谢你的帮助。

我不使用Java,但您可以将触发器和输出组合在一个函数中。

@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);
}

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

最新更新