login to rate this
[.NET7] Design Patterns: Facade in a Web Application
7/28/2024 8:41:52 AM
5
0
|
login to rate this
[.NET7] Design Patterns: Repository in a Web Application
1/6/2023 7:51:12 AM
0
0
|
login to rate this
[.NET7] IP GeoLocation with Dependency Injection and Custom Middleware
1/14/2023 3:15:14 PM
0
0
|
login to rate this
[.NET7] Weather Forecast with Dependency Injection and Custom Middleware
10/3/2023 10:35:11 AM
0
0
|
login to rate this
Enum as String in EF Core
10/9/2023 2:49:39 AM
0
0
|
login to rate this
Esta é para Devs Junior! Uso de fila no ASP.NET Core 7
10/26/2023 10:48:52 AM
0
0
|
login to rate this
Keep Track of your Page Visits in Blazor Server
10/16/2023 10:27:37 AM
0
0
|
nbolt
Olá Pessoal! Neste post eu vou demonstrar o uso prático de filas na execução de requisições em uma API construída em ASP.NET Core 7. Antes de começar com código-fonte diretamente, seguem alguns pré-requisitos para a API desenvolvida:
- Para esse exercício, você precisará de conhecimentos básicos de Visual Studio e Swagger (para chamar as APIs);
- Há 2 endpoints: Save e Process. O primeiro endpoint é responsável por receber e guardar imagens no diretório wwwroot, enquanto que o segundo endpoint pesquisa as imagens no mesmo diretório e as retorna, conforme parâmetros da requisição;
- As imagens são salvas como JPG, independente do formato enviado (BMP, PNG, etc.);
- A aplicação utiliza uma biblioteca chamada ImageSharp (SixLabors) para manipulação de imagens;
- Como o processo de salvar é paralelo, ou seja as imagens não são processadas sequencialmente, há uma inteligência na API para salvar apenas as imagens finais no diretório. Ex.: uma chamada que contenha 2 imagens com o mesmo nome na requisição: apenas a última imagem por nome distinto enviada será salva (isso evita que elas sejam sobrescritas desnecessariamente);
- Como as duas API são construídas com o conceito de fila (queue), elas podem ser chamadas individualmente e simultâneamente sem problema nenhum.
Clone o repositório do github https://github.com/guilhermesuzuki/fila-no-asp-net-core-7.git e abra a solução dentro do diretório. Logo de cara, você vê dois projetos: fila-no-asp-net-core-7 e fila-no-asp-net-core-7.Tests. Tenha certeza que o primeiro projeto esteja configurado como startup, clicando com o botão direito do mouse sobre ele e depois em Set as Startup Project (veja imagem abaixo):
Antes de rodar a aplicação, navegue para as 2 duas controllers dentro do projeto principal (ProcessController.cs e SaveController.cs). Essas duas controllers em conjunto com as classes ProcessHub e SaveHub são o coração da aplicação e funcionam da seguinte maneira, quando uma requisição é feita:
Agora finalmente, rode a aplicação apertando o play no Visual Studio. Você deverá ver uma janela de browser com o seguinte layout:
Agora chame a API Save no Swagger com a seguinte requisição (contendo 9 imagens no total, 5 distintas):
{
"RequestId": 12345,
"Images": [
{
"FileName": "image1.jpg",
"base64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/wAARCAAgACADASIAAhEBAxEB/8QBogAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoLEAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+foBAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKCxEAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9sAhAAIBgYHBgUIBwcHCQkICgwUDQwLCwwZEhMPFB0aHx4dGhwcICQuJyAiLCMcHCg3KSwwMTQ0NB8nOT04MjwuMzQyAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/2gAMAwEAAhEDEQA/AOn+Efhbw9qPwv0i6vtA0u6uZfO8yaezjd2xM4GSRk4AA/CnfEPQvDlhplrpOm+GtIj1HVJCiyRWMStFCmDK4bYQDgqg5BBkyD8tcl4B8R65B4MtdBsNSsrQW6CTzYoBLNGskhk/iYoc5K/d46cGu2trOWS8OpancfbNRaFYDM0aphFZmCgKAOrHPvXiZjnNHDRlGLvP0OujhJtqUthngTwr4afT7jSL7w3pc17YPkzTWSO00MhZo3LMvsyYySNnYEVpeMfB3he18D+ILiDw5o8M8Wm3DxyR2MSsjCJiCCFyCDzmqN5plxdX1vqVlqs+nX8EbxJNDEj7kYjKsGGGHAIB4BwayvGOr+IpNB1DQhrFhLcXtrPJsSxKyiHkuCd5VV2nywSu4+pbLVnl2d0K0IwqStPro/vvYVbDzUm4rQ8C8Na0dF1VLqKGSSbbsj2S7OT6jB3DkZBr6VsZHltIt6gOVA46E98fjmvlbT5Ei1G3klbZGsisWxnABzXba18UdTusQaaTb265BJ5Ln+g9qWc5XUxtSHslr1b/AANMNWjTpvnfyPf7iR4bSV4U3ypGSi+pA4zXznJ8Q/E3mak0ciKNQZvOJgVmKkbQm4jICg4A7ZPrW/4c+Ml9YRJbaxbC8jBw0qna+30x0J9+K5fUPGeoyTPFZTLDbRyN5TpEFdkz8u4/SubKsprYWU4Vqale1m3p+T8h4itCaTjKx//Z"
},
{
"FileName": "image1.jpg",
"base64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/wAARCAAgACADASIAAhEBAxEB/8QBogAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoLEAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+foBAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKCxEAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9sAhAAIBgYHBgUIBwcHCQkICgwUDQwLCwwZEhMPFB0aHx4dGhwcICQuJyAiLCMcHCg3KSwwMTQ0NB8nOT04MjwuMzQyAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/2gAMAwEAAhEDEQA/AOn+Efhbw9qPwv0i6vtA0u6uZfO8yaezjd2xM4GSRk4AA/CnfEPQvDlhplrpOm+GtIj1HVJCiyRWMStFCmDK4bYQDgqg5BBkyD8tcl4B8R65B4MtdBsNSsrQW6CTzYoBLNGskhk/iYoc5K/d46cGu2trOWS8OpancfbNRaFYDM0aphFZmCgKAOrHPvXiZjnNHDRlGLvP0OujhJtqUthngTwr4afT7jSL7w3pc17YPkzTWSO00MhZo3LMvsyYySNnYEVpeMfB3he18D+ILiDw5o8M8Wm3DxyR2MSsjCJiCCFyCDzmqN5plxdX1vqVlqs+nX8EbxJNDEj7kYjKsGGGHAIB4BwayvGOr+IpNB1DQhrFhLcXtrPJsSxKyiHkuCd5VV2nywSu4+pbLVnl2d0K0IwqStPro/vvYVbDzUm4rQ8C8Na0dF1VLqKGSSbbsj2S7OT6jB3DkZBr6VsZHltIt6gOVA46E98fjmvlbT5Ei1G3klbZGsisWxnABzXba18UdTusQaaTb265BJ5Ln+g9qWc5XUxtSHslr1b/AANMNWjTpvnfyPf7iR4bSV4U3ypGSi+pA4zXznJ8Q/E3mak0ciKNQZvOJgVmKkbQm4jICg4A7ZPrW/4c+Ml9YRJbaxbC8jBw0qna+30x0J9+K5fUPGeoyTPFZTLDbRyN5TpEFdkz8u4/SubKsprYWU4Vqale1m3p+T8h4itCaTjKx//Z"
},
{
"FileName": "image2.jpg",
"base64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/wAARCAAgACADASIAAhEBAxEB/8QBogAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoLEAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+foBAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKCxEAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9sAhAAIBgYHBgUIBwcHCQkICgwUDQwLCwwZEhMPFB0aHx4dGhwcICQuJyAiLCMcHCg3KSwwMTQ0NB8nOT04MjwuMzQyAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/2gAMAwEAAhEDEQA/AOn+Efhbw9qPwv0i6vtA0u6uZfO8yaezjd2xM4GSRk4AA/CnfEPQvDlhplrpOm+GtIj1HVJCiyRWMStFCmDK4bYQDgqg5BBkyD8tcl4B8R65B4MtdBsNSsrQW6CTzYoBLNGskhk/iYoc5K/d46cGu2trOWS8OpancfbNRaFYDM0aphFZmCgKAOrHPvXiZjnNHDRlGLvP0OujhJtqUthngTwr4afT7jSL7w3pc17YPkzTWSO00MhZo3LMvsyYySNnYEVpeMfB3he18D+ILiDw5o8M8Wm3DxyR2MSsjCJiCCFyCDzmqN5plxdX1vqVlqs+nX8EbxJNDEj7kYjKsGGGHAIB4BwayvGOr+IpNB1DQhrFhLcXtrPJsSxKyiHkuCd5VV2nywSu4+pbLVnl2d0K0IwqStPro/vvYVbDzUm4rQ8C8Na0dF1VLqKGSSbbsj2S7OT6jB3DkZBr6VsZHltIt6gOVA46E98fjmvlbT5Ei1G3klbZGsisWxnABzXba18UdTusQaaTb265BJ5Ln+g9qWc5XUxtSHslr1b/AANMNWjTpvnfyPf7iR4bSV4U3ypGSi+pA4zXznJ8Q/E3mak0ciKNQZvOJgVmKkbQm4jICg4A7ZPrW/4c+Ml9YRJbaxbC8jBw0qna+30x0J9+K5fUPGeoyTPFZTLDbRyN5TpEFdkz8u4/SubKsprYWU4Vqale1m3p+T8h4itCaTjKx//Z"
},
{
"FileName": "image2.jpg",
"base64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/wAARCAAgACADASIAAhEBAxEB/8QBogAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoLEAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+foBAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKCxEAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9sAhAAIBgYHBgUIBwcHCQkICgwUDQwLCwwZEhMPFB0aHx4dGhwcICQuJyAiLCMcHCg3KSwwMTQ0NB8nOT04MjwuMzQyAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/2gAMAwEAAhEDEQA/AOn+Efhbw9qPwv0i6vtA0u6uZfO8yaezjd2xM4GSRk4AA/CnfEPQvDlhplrpOm+GtIj1HVJCiyRWMStFCmDK4bYQDgqg5BBkyD8tcl4B8R65B4MtdBsNSsrQW6CTzYoBLNGskhk/iYoc5K/d46cGu2trOWS8OpancfbNRaFYDM0aphFZmCgKAOrHPvXiZjnNHDRlGLvP0OujhJtqUthngTwr4afT7jSL7w3pc17YPkzTWSO00MhZo3LMvsyYySNnYEVpeMfB3he18D+ILiDw5o8M8Wm3DxyR2MSsjCJiCCFyCDzmqN5plxdX1vqVlqs+nX8EbxJNDEj7kYjKsGGGHAIB4BwayvGOr+IpNB1DQhrFhLcXtrPJsSxKyiHkuCd5VV2nywSu4+pbLVnl2d0K0IwqStPro/vvYVbDzUm4rQ8C8Na0dF1VLqKGSSbbsj2S7OT6jB3DkZBr6VsZHltIt6gOVA46E98fjmvlbT5Ei1G3klbZGsisWxnABzXba18UdTusQaaTb265BJ5Ln+g9qWc5XUxtSHslr1b/AANMNWjTpvnfyPf7iR4bSV4U3ypGSi+pA4zXznJ8Q/E3mak0ciKNQZvOJgVmKkbQm4jICg4A7ZPrW/4c+Ml9YRJbaxbC8jBw0qna+30x0J9+K5fUPGeoyTPFZTLDbRyN5TpEFdkz8u4/SubKsprYWU4Vqale1m3p+T8h4itCaTjKx//Z"
},
{
"FileName": "image3.jpg",
"base64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/wAARCAAgACADASIAAhEBAxEB/8QBogAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoLEAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+foBAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKCxEAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9sAhAAIBgYHBgUIBwcHCQkICgwUDQwLCwwZEhMPFB0aHx4dGhwcICQuJyAiLCMcHCg3KSwwMTQ0NB8nOT04MjwuMzQyAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/2gAMAwEAAhEDEQA/AOn+Efhbw9qPwv0i6vtA0u6uZfO8yaezjd2xM4GSRk4AA/CnfEPQvDlhplrpOm+GtIj1HVJCiyRWMStFCmDK4bYQDgqg5BBkyD8tcl4B8R65B4MtdBsNSsrQW6CTzYoBLNGskhk/iYoc5K/d46cGu2trOWS8OpancfbNRaFYDM0aphFZmCgKAOrHPvXiZjnNHDRlGLvP0OujhJtqUthngTwr4afT7jSL7w3pc17YPkzTWSO00MhZo3LMvsyYySNnYEVpeMfB3he18D+ILiDw5o8M8Wm3DxyR2MSsjCJiCCFyCDzmqN5plxdX1vqVlqs+nX8EbxJNDEj7kYjKsGGGHAIB4BwayvGOr+IpNB1DQhrFhLcXtrPJsSxKyiHkuCd5VV2nywSu4+pbLVnl2d0K0IwqStPro/vvYVbDzUm4rQ8C8Na0dF1VLqKGSSbbsj2S7OT6jB3DkZBr6VsZHltIt6gOVA46E98fjmvlbT5Ei1G3klbZGsisWxnABzXba18UdTusQaaTb265BJ5Ln+g9qWc5XUxtSHslr1b/AANMNWjTpvnfyPf7iR4bSV4U3ypGSi+pA4zXznJ8Q/E3mak0ciKNQZvOJgVmKkbQm4jICg4A7ZPrW/4c+Ml9YRJbaxbC8jBw0qna+30x0J9+K5fUPGeoyTPFZTLDbRyN5TpEFdkz8u4/SubKsprYWU4Vqale1m3p+T8h4itCaTjKx//Z"
},
{
"FileName": "image3.jpg",
"base64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/wAARCAAgACADASIAAhEBAxEB/8QBogAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoLEAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+foBAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKCxEAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9sAhAAIBgYHBgUIBwcHCQkICgwUDQwLCwwZEhMPFB0aHx4dGhwcICQuJyAiLCMcHCg3KSwwMTQ0NB8nOT04MjwuMzQyAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/2gAMAwEAAhEDEQA/AOn+Efhbw9qPwv0i6vtA0u6uZfO8yaezjd2xM4GSRk4AA/CnfEPQvDlhplrpOm+GtIj1HVJCiyRWMStFCmDK4bYQDgqg5BBkyD8tcl4B8R65B4MtdBsNSsrQW6CTzYoBLNGskhk/iYoc5K/d46cGu2trOWS8OpancfbNRaFYDM0aphFZmCgKAOrHPvXiZjnNHDRlGLvP0OujhJtqUthngTwr4afT7jSL7w3pc17YPkzTWSO00MhZo3LMvsyYySNnYEVpeMfB3he18D+ILiDw5o8M8Wm3DxyR2MSsjCJiCCFyCDzmqN5plxdX1vqVlqs+nX8EbxJNDEj7kYjKsGGGHAIB4BwayvGOr+IpNB1DQhrFhLcXtrPJsSxKyiHkuCd5VV2nywSu4+pbLVnl2d0K0IwqStPro/vvYVbDzUm4rQ8C8Na0dF1VLqKGSSbbsj2S7OT6jB3DkZBr6VsZHltIt6gOVA46E98fjmvlbT5Ei1G3klbZGsisWxnABzXba18UdTusQaaTb265BJ5Ln+g9qWc5XUxtSHslr1b/AANMNWjTpvnfyPf7iR4bSV4U3ypGSi+pA4zXznJ8Q/E3mak0ciKNQZvOJgVmKkbQm4jICg4A7ZPrW/4c+Ml9YRJbaxbC8jBw0qna+30x0J9+K5fUPGeoyTPFZTLDbRyN5TpEFdkz8u4/SubKsprYWU4Vqale1m3p+T8h4itCaTjKx//Z"
},
{
"FileName": "image4.jpg",
"base64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/wAARCAAgACADASIAAhEBAxEB/8QBogAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoLEAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+foBAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKCxEAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9sAhAAIBgYHBgUIBwcHCQkICgwUDQwLCwwZEhMPFB0aHx4dGhwcICQuJyAiLCMcHCg3KSwwMTQ0NB8nOT04MjwuMzQyAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/2gAMAwEAAhEDEQA/AOn+Efhbw9qPwv0i6vtA0u6uZfO8yaezjd2xM4GSRk4AA/CnfEPQvDlhplrpOm+GtIj1HVJCiyRWMStFCmDK4bYQDgqg5BBkyD8tcl4B8R65B4MtdBsNSsrQW6CTzYoBLNGskhk/iYoc5K/d46cGu2trOWS8OpancfbNRaFYDM0aphFZmCgKAOrHPvXiZjnNHDRlGLvP0OujhJtqUthngTwr4afT7jSL7w3pc17YPkzTWSO00MhZo3LMvsyYySNnYEVpeMfB3he18D+ILiDw5o8M8Wm3DxyR2MSsjCJiCCFyCDzmqN5plxdX1vqVlqs+nX8EbxJNDEj7kYjKsGGGHAIB4BwayvGOr+IpNB1DQhrFhLcXtrPJsSxKyiHkuCd5VV2nywSu4+pbLVnl2d0K0IwqStPro/vvYVbDzUm4rQ8C8Na0dF1VLqKGSSbbsj2S7OT6jB3DkZBr6VsZHltIt6gOVA46E98fjmvlbT5Ei1G3klbZGsisWxnABzXba18UdTusQaaTb265BJ5Ln+g9qWc5XUxtSHslr1b/AANMNWjTpvnfyPf7iR4bSV4U3ypGSi+pA4zXznJ8Q/E3mak0ciKNQZvOJgVmKkbQm4jICg4A7ZPrW/4c+Ml9YRJbaxbC8jBw0qna+30x0J9+K5fUPGeoyTPFZTLDbRyN5TpEFdkz8u4/SubKsprYWU4Vqale1m3p+T8h4itCaTjKx//Z"
},
{
"FileName": "image4.jpg",
"base64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/wAARCAAgACADASIAAhEBAxEB/8QBogAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoLEAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+foBAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKCxEAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9sAhAAIBgYHBgUIBwcHCQkICgwUDQwLCwwZEhMPFB0aHx4dGhwcICQuJyAiLCMcHCg3KSwwMTQ0NB8nOT04MjwuMzQyAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/2gAMAwEAAhEDEQA/AOn+Efhbw9qPwv0i6vtA0u6uZfO8yaezjd2xM4GSRk4AA/CnfEPQvDlhplrpOm+GtIj1HVJCiyRWMStFCmDK4bYQDgqg5BBkyD8tcl4B8R65B4MtdBsNSsrQW6CTzYoBLNGskhk/iYoc5K/d46cGu2trOWS8OpancfbNRaFYDM0aphFZmCgKAOrHPvXiZjnNHDRlGLvP0OujhJtqUthngTwr4afT7jSL7w3pc17YPkzTWSO00MhZo3LMvsyYySNnYEVpeMfB3he18D+ILiDw5o8M8Wm3DxyR2MSsjCJiCCFyCDzmqN5plxdX1vqVlqs+nX8EbxJNDEj7kYjKsGGGHAIB4BwayvGOr+IpNB1DQhrFhLcXtrPJsSxKyiHkuCd5VV2nywSu4+pbLVnl2d0K0IwqStPro/vvYVbDzUm4rQ8C8Na0dF1VLqKGSSbbsj2S7OT6jB3DkZBr6VsZHltIt6gOVA46E98fjmvlbT5Ei1G3klbZGsisWxnABzXba18UdTusQaaTb265BJ5Ln+g9qWc5XUxtSHslr1b/AANMNWjTpvnfyPf7iR4bSV4U3ypGSi+pA4zXznJ8Q/E3mak0ciKNQZvOJgVmKkbQm4jICg4A7ZPrW/4c+Ml9YRJbaxbC8jBw0qna+30x0J9+K5fUPGeoyTPFZTLDbRyN5TpEFdkz8u4/SubKsprYWU4Vqale1m3p+T8h4itCaTjKx//Z"
},
{
"FileName": "image5.jpg",
"base64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/wAARCAAgACADASIAAhEBAxEB/8QBogAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoLEAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+foBAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKCxEAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9sAhAAIBgYHBgUIBwcHCQkICgwUDQwLCwwZEhMPFB0aHx4dGhwcICQuJyAiLCMcHCg3KSwwMTQ0NB8nOT04MjwuMzQyAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/2gAMAwEAAhEDEQA/AOn+Efhbw9qPwv0i6vtA0u6uZfO8yaezjd2xM4GSRk4AA/CnfEPQvDlhplrpOm+GtIj1HVJCiyRWMStFCmDK4bYQDgqg5BBkyD8tcl4B8R65B4MtdBsNSsrQW6CTzYoBLNGskhk/iYoc5K/d46cGu2trOWS8OpancfbNRaFYDM0aphFZmCgKAOrHPvXiZjnNHDRlGLvP0OujhJtqUthngTwr4afT7jSL7w3pc17YPkzTWSO00MhZo3LMvsyYySNnYEVpeMfB3he18D+ILiDw5o8M8Wm3DxyR2MSsjCJiCCFyCDzmqN5plxdX1vqVlqs+nX8EbxJNDEj7kYjKsGGGHAIB4BwayvGOr+IpNB1DQhrFhLcXtrPJsSxKyiHkuCd5VV2nywSu4+pbLVnl2d0K0IwqStPro/vvYVbDzUm4rQ8C8Na0dF1VLqKGSSbbsj2S7OT6jB3DkZBr6VsZHltIt6gOVA46E98fjmvlbT5Ei1G3klbZGsisWxnABzXba18UdTusQaaTb265BJ5Ln+g9qWc5XUxtSHslr1b/AANMNWjTpvnfyPf7iR4bSV4U3ypGSi+pA4zXznJ8Q/E3mak0ciKNQZvOJgVmKkbQm4jICg4A7ZPrW/4c+Ml9YRJbaxbC8jBw0qna+30x0J9+K5fUPGeoyTPFZTLDbRyN5TpEFdkz8u4/SubKsprYWU4Vqale1m3p+T8h4itCaTjKx//Z"
}
]
}
Você deve reparar que essas imagens foram criadas no diretório wwwroot/images do projeto principal (após rodar a API, é claro). Veja o resultado da chamada com o Status "Saved" na imagem abaixo:
Agora navegue para a API Process no Swagger e chame o método utilizando a seguinte requisição:
{
"RequestId": 0,
"FileNames": [
"image100.jpg","image200.jpg","image300.jpg","image400.jpg","image500.jpg","image1.jpg","image2.jpg","image3.jpg","image4.jpg","image5.jpg",
"image6.jpg","image7.jpg","image8.jpg","image9.jpg","image10.jpg"
]
}
Veja um exemplo de retorno da chamada, conforme imagem abaixo:
E voila! Você executou a estrutura de filas implementada na solução fila-no-asp-net-core-7. Se você é um DEV mais junior, te recomendo colocar uns breakpoints na linha 47 da classe Hub (que é herdada por ProcessHub a SaveHub) e rodar a aplicação:
Se você encontrar quaisquer problemas, principalmente na execução dos testes unitários, mande um comentário para mim e vamos discutir possíveis soluções 😁.
Espero que tenham gostado do conteúdo. Até mais!
nbolt
nbolt
nbolt

We use cookies and similar technologies to enhance your browsing experience, analyze site traffic, personalize content, and serve targeted advertisements. By continuing to use our site, you consent to our use of cookies. And click OK to close this pop-up window.