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

时间:2017-10-19 13:16:44

标签: java azure-functions

我想使用Java Azure Functions SDK:

  1. 接受PDF作为输入
  2. 处理PDF(使用pdfbox库)。
  3. 返回已更改的PDF文件。
  4. 最终结果应该从队列中读取PDF并将处理后的PDF发布到另一个队列。

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

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

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

      1.1。我可以在Http Trigger中使用零参数或可选参数吗?

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

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

    3. 我尝试将有效的html作为字符串作为第一次尝试返回,但是返回并呈现为普通/文本。

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

1 个答案:

答案 0 :(得分:0)

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

在HttpTrigger Azure功能中使用Azure Storage Queue 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.Annotations

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"
    }
  ]
}

您可以从here获取详细信息。

希望它对你有所帮助。