使用Java Azure Functions SDK处理二进制数据



我想使用Java Azure函数SDK来:

  1. 接受PDF作为输入
  2. 处理PDF(使用pdfbox库)
  3. 返回更改后的PDF

最终结果应该从队列中读取PDF,并将处理后的PDF发布到另一个队列。

是否有使用Java Azure Functions SDK从队列读取/写入二进制数据的示例?

对于测试、调试和其他用途,最好有:

  1. 通过post接受PDF的http触发器。如何在Java中做到这一点?目前我还不清楚如何在http触发器中使用HttRequestMessage。

    1.1.我可以在Http触发器中使用零参数或可选参数吗?

    1.2.自己使用HttpRequestMessage解析参数?

  2. 您可以使用HttpResponseMessage作为返回类型并设置返回代码。目前尚不清楚如何将输出的mime类型设置为application/pdf。

我第一次尝试将有效的html作为字符串返回,但被返回并呈现为纯文本。

原因是,使用触发器,您不必设置队列。

根据您的需要,我的建议可以分为以下几个步骤:

在HttpTrigger Azure函数中使用Azure存储队列Java sdk

步骤1:从队列接收二进制数据。

// Setup the cloud storage account.
CloudStorageAccount account = CloudStorageAccount.parse(storageConnectionString);
// Create a queue service client
CloudQueueClient queueClient = account.createCloudQueueClient();
// Retrieve a reference to a queue
// Append a random UUID to the end of the queue name so that this
// sample can be run more than once in quick succession.
CloudQueue queue = queueClient.getQueueReference("test");
// Retrieve the first visible message in the queue
CloudQueueMessage retrieveMessage = queue.retrieveMessage();

步骤2:使用pdfbox库来处理您的pdf。

步骤3:将二进制数据发送到队列中。

// Setup the cloud storage account.
CloudStorageAccount account = CloudStorageAccount.parse(storageConnectionString);
// Create a queue service client
CloudQueueClient queueClient = account.createCloudQueueClient();
// Retrieve a reference to a queue
// Append a random UUID to the end of the queue name so that this
// sample can be run more than once in quick succession.
CloudQueue queue = queueClient.getQueueReference("test");
// Create messages and add it to the queue
CloudQueueMessage message1 = new CloudQueueMessage("your pdf data");
queue.addMessage(message1);

配置HttpTrigger Azure函数的输入和输出

当然,Azure Function支持zerooptional参数。

步骤4:有两种配置inputoutput参数的方法:

1.注释

public class Function {
public String echo(@HttpTrigger(name = "req", methods = {"post"},  authLevel = AuthorizationLevel.ANONYMOUS) 
String req, ExecutionContext context) {
return String.format(req);
}
}

2.function.json

{
"scriptFile": "azure-functions-example.jar",
"entryPoint": "com.example.MyClass.echo",
"bindings": [
{
"type": "httpTrigger",
"name": "req",
"direction": "in",
"authLevel": "anonymous",
"methods": [ "post" ]
},
{
"type": "http",
"name": "$return",
"direction": "out"
}
]
}

你可以从这里获得详细信息。

希望它能帮助你。

最新更新