azure队列触发器不适用于java

mcvgt66p  于 2021-07-08  发布在  Java
关注(0)|答案(1)|浏览(379)

我有一个spring启动应用程序,它将在azure队列上发布消息。我还有一个用java编写的azure queuetrigger函数,它将侦听spring启动应用程序已向其发布消息的同一队列。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);
}

我正在传递相同的连接字符串和队列名称,但仍然不起作用。如果我在本地机器上运行这个函数,它会被触发,但会出现错误图像

jexiocij

jexiocij1#

正如官方文件所说,
函数需要base64编码的字符串。对编码类型的任何调整(以便将数据准备为base64编码字符串)都需要在调用服务中实现。
更新发件人代码以发送base64编码的邮件。

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

相关问题