gpt4 book ai didi

java - Azure 队列触发器不适用于 Java

转载 作者:行者123 更新时间:2023-12-02 07:00:20 26 4
gpt4 key购买 nike

我有一个 Spring Boot 应用程序,它将在 azure 队列上发布消息。我还有一个用 Java 编写的 azure queueTrigger 函数,它将监听 Spring Boot 应用程序已向其发布消息的同一个队列。 queueTrigger 函数无法检测到队列上发布的消息。

这是我的发布商代码

public static void addQueueMessage(String connectStr, String queueName, String message) {
try {
// Instantiate a QueueClient which will be
// used to create and manipulate the queue
QueueClient queueClient = new QueueClientBuilder()
.connectionString(connectStr)
.queueName(queueName)
.buildClient();

System.out.println("Adding message to the queue: " + message);

// Add a message to the queue
queueClient.sendMessage(message);
} catch (QueueStorageException e) {
// Output the exception message and stack trace
System.out.println(e.getMessage());
e.printStackTrace();
}
}

这是我的queueTrigger函数应用代码

@FunctionName("queueprocessor")
public void run(
@QueueTrigger(name = "message",
queueName = "queuetest",
connection = "AzureWebJobsStorage") String message,
final ExecutionContext context
) {
context.getLogger().info(message);
}

我传递了相同的连接字符串和队列名称,但仍然不起作用。如果我在本地计算机上运行函数,则会触发该函数,但出现错误 error image

最佳答案

作为official doc建议,

Functions expect a base64 encoded string. Any adjustments to the encoding type (in order to prepare data as a base64 encoded string) need to be implemented in the calling service.

更新发送者代码以发送 Base64 编码消息。

String encodedMsg = Base64.getEncoder().encodeToString(message.getBytes())
queueClient.sendMessage(encodedMsg);

关于java - Azure 队列触发器不适用于 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65033545/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com