如何为大尺寸图像实现Azure队列?

如何为大尺寸图像实现Azure队列?,azure,message-queue,azureservicebus,azure-servicebus-queues,azure-storage-queues,Azure,Message Queue,Azureservicebus,Azure Servicebus Queues,Azure Storage Queues,问题: 我们希望允许用户上传图像并将其保存在azure blob中。如果azure blob关闭,那么我们将释放这些映像,因此我们希望在客户端和blob之间放置一个队列 这个想法是,当用户上传图像时,它应该进入队列,然后应该从后端API中提取它并放入Azure blob存储 Azure存储队列和服务总线的大小限制仅为64kb和1mb 我还可以使用哪些其他选项来实现这一点 *使用更多信息编辑。只需将图像放在Azure Blob存储上,并使用Blob存储上的触发器创建Azure函数。这是一种有意的方

问题: 我们希望允许用户上传图像并将其保存在azure blob中。如果azure blob关闭,那么我们将释放这些映像,因此我们希望在客户端和blob之间放置一个队列

这个想法是,当用户上传图像时,它应该进入队列,然后应该从后端API中提取它并放入Azure blob存储

Azure存储队列和服务总线的大小限制仅为64kb和1mb

我还可以使用哪些其他选项来实现这一点


*使用更多信息编辑。

只需将图像放在Azure Blob存储上,并使用Blob存储上的触发器创建Azure函数。这是一种有意的方式,不要使用它不打算使用的队列

[FunctionName("BlobTriggerCSharp")]        
public static void Run(
     [BlobTrigger("samples-workitems/{name}")] Stream myBlob, 
     string name, 
     ILogger log)
{
    log.LogInformation($"C# Blob trigger for \n Name:{name} \n Size: {myBlob.Length} bytes");
}

只需将图像放在Azure Blob存储上,并在Blob存储上使用触发器创建Azure函数。这是一种有意的方式,不要使用它不打算使用的队列

[FunctionName("BlobTriggerCSharp")]        
public static void Run(
     [BlobTrigger("samples-workitems/{name}")] Stream myBlob, 
     string name, 
     ILogger log)
{
    log.LogInformation($"C# Blob trigger for \n Name:{name} \n Size: {myBlob.Length} bytes");
}

将映像上载到blob存储,并将映像的URI改为发送到队列。我是否应该期望blob的行为与队列相同?基本上,如果我使用Blob,那么我需要使用队列吗?在您的问题中,您没有足够的关于您正在做什么的信息,包括什么/如何将东西放到队列中,什么进程正在从队列中接收东西,以及您在处理队列时正在做什么。如果您想通过队列通知进程已准备好处理图像,那么将要处理的图像写入blob存储,然后在队列上发送一条消息,其中包含指向该文件所在位置的指针,这就是我的建议。为了进一步澄清,您同时使用blob存储和队列。将映像上载到blob存储,然后将映像的URI发送到队列。我是否应该期望blob的行为与队列相同?基本上,如果我使用Blob,那么我需要使用队列吗?在您的问题中,您没有足够的关于您正在做什么的信息,包括什么/如何将东西放到队列中,什么进程正在从队列中接收东西,以及您在处理队列时正在做什么。如果您想通过队列通知进程已准备好处理图像,那么将要处理的图像写入blob存储,然后在队列上发送一条消息,其中包含指向该文件所在位置的指针,这就是我的建议。为了进一步澄清,您同时使用了blob存储和队列。我刚刚用更多信息回答了我的问题。我想在客户端和azure blob之间建立队列。那是错误的设计吗?老实说有点,因为似乎没有必要。我检查了你的更新答案,你仍然没有说为什么,你刚才说你想要它在中间。通常,blob用于文件,队列用于消息。就这样呆着,你会没事的。若你们出于某种原因需要排队,那个么把文件放在blob上,把文件URL放在message que上。嘿,亚当,可能是我对排队的理解不清楚,或者我并没有解释这个问题。队列不是用作缓冲机制吗?所以,如果Blob服务关闭,用户上传图像,那么我们可以将该图像保留在队列中,当Blob服务启动时,它可以从队列中读取图像并插入Blob存储。这里blob服务将是定制的webapi.Hey。没问题,让我解释一下。它们不是缓冲区,但可以作为一个缓冲区,但绝对不能用于服务停机场景。尽管如此,它们大多是为基于事件的处理体系结构而设计的,用于保存短期消息。请注意,队列和blob都是一个服务的一部分,因此,如果一个服务出现故障,很可能两个服务都会出现故障。如果出现临时停机,您应该在客户端上实施重试策略。在C#中有用于此的polly库,但存储SDK将重试策略作为内置功能处理。请随意查看我的viedeo。如果这对你有帮助,请随意将此主题标记为已回答。我只是用更多信息对我的问题进行了补充。我想在客户端和azure blob之间建立队列。那是错误的设计吗?老实说有点,因为似乎没有必要。我检查了你的更新答案,你仍然没有说为什么,你刚才说你想要它在中间。通常,blob用于文件,队列用于消息。就这样呆着,你会没事的。若你们出于某种原因需要排队,那个么把文件放在blob上,把文件URL放在message que上。嘿,亚当,可能是我对排队的理解不清楚,或者我并没有解释这个问题。队列不是用作缓冲机制吗?所以,如果Blob服务关闭,用户上传图像,那么我们可以将该图像保留在队列中,当Blob服务启动时,它可以从队列中读取图像并插入Blob存储。这里blob服务将是定制的webapi.Hey。没问题,让我解释一下。它们不是缓冲区,但可以作为一个缓冲区,但绝对不能用于服务停机场景。尽管如此,它们大多是为基于事件的处理体系结构而设计的,用于保存短期消息。请注意,队列和blob都是一个服务的一部分,因此,如果一个服务出现故障,很可能两个服务都会出现故障。如果出现临时停机,您应该在客户端上实施重试策略。在C#中有用于此的polly库,但存储SDK将重试策略作为内置功能处理。请随意查看我的viedeo。如果这对您有帮助,请随时将此主题标记为已回答。