Descubra filas, tópicos e assinaturas do Barramento de Serviço

Concluído

As entidades de mensagens que formam o núcleo dos recursos de mensagens no Service Bus são filas, tópicos e assinaturas e regras/ações.

Queues

As filas oferecem uma entrega de mensagens First In, First Out (FIFO) para um ou mais consumidores concorrentes. Ou seja, os recetores normalmente recebem e processam mensagens na ordem em que foram adicionadas à fila. E apenas uma mensagem o consumidor recebe e processa cada mensagem. Como as mensagens são armazenadas de forma durável na fila, os produtores (remetentes) e os consumidores (recetores) não precisam processar mensagens simultaneamente.

Um benefício conexo é o nivelamento de carga, que permite que produtores e consumidores enviem e recebam mensagens a taxas diferentes. Em muitas aplicações, a carga do sistema varia ao longo do tempo. No entanto, o tempo de processamento necessário para cada unidade de trabalho é normalmente constante. Intermediar produtores de mensagens e consumidores com uma fila significa que o aplicativo consumidor só precisa ser capaz de lidar com a carga média em vez da carga de pico.

O uso de filas para intermediar entre produtores de mensagens e consumidores fornece um acoplamento flexível inerente entre os componentes. Como produtores e consumidores não estão cientes um do outro, um consumidor pode ser atualizado sem ter qualquer efeito sobre o produtor.

Você pode criar filas usando os modelos do portal do Azure, PowerShell, CLI ou Gerenciador de Recursos. Em seguida, envie e receba mensagens usando clientes escritos em C#, Java, Python e JavaScript.

Modos de receção

Você pode especificar dois modos diferentes nos quais o Service Bus recebe mensagens: Receber e excluir ou Espiar bloqueio.

Receber e excluir

Nesse modo, quando o Service Bus recebe a solicitação do consumidor, ele marca a mensagem como consumida e a retorna ao aplicativo consumidor. Este modo é o modelo mais simples. Ele funciona melhor para cenários em que o aplicativo pode tolerar não processar uma mensagem se ocorrer uma falha. Por exemplo, considere um cenário em que o consumidor emite a solicitação de recebimento e, em seguida, falha antes de processá-la. Como o Service Bus marca a mensagem como consumida, o aplicativo começa a consumir mensagens ao reiniciar. Ele perde a mensagem que consumia antes do acidente.

Fechadura de espreitar

Neste modo, a operação de receção torna-se numa operação de duas etapas, que permite o suporte de aplicações que não toleram mensagens em falta.

  1. Localiza a próxima mensagem a ser consumida, bloqueia-a para impedir que outros consumidores a recebam e, em seguida, retorna a mensagem para o aplicativo.

  2. Depois de a aplicação terminar de processar a mensagem, pede ao Service Bus para concluir a segunda fase do processo de receção. Em seguida, o serviço marca a mensagem como consumida.

Se o aplicativo não conseguir processar a mensagem por algum motivo, ele poderá solicitar que o serviço Service Bus abandone a mensagem. O Service Bus desbloqueia a mensagem e a disponibiliza para ser recebida novamente, seja pelo mesmo consumidor ou por outro consumidor concorrente. Em segundo lugar, há um tempo limite associado ao bloqueio. Se a aplicação não conseguir processar a mensagem antes de o tempo limite de bloqueio expirar, o Service Bus desbloqueará a mensagem e ficará disponível para ser recebida novamente.

Tópicos e subscrições

Uma fila permite o processamento de uma mensagem por um único consumidor. Em contraste com as filas, os tópicos e as assinaturas fornecem uma forma de comunicação um-para-muitos em um padrão de publicação e assinatura . É útil para dimensionar para um grande número de destinatários. Cada mensagem publicada é disponibilizada para cada subscrição registada com o tópico. O Publisher envia uma mensagem para um tópico e um ou mais subscritores recebem uma cópia da mensagem.

As subscrições podem utilizar mais filtros para restringir as mensagens que pretendem receber. Os editores enviam mensagens para um tópico da mesma forma que enviam mensagens para uma fila. Mas, os consumidores não recebem mensagens diretamente do tema. Em vez disso, os consumidores recebem mensagens de assinaturas do tópico. Uma assinatura de tópico se assemelha a uma fila virtual que recebe cópias das mensagens enviadas para o tópico. Os consumidores recebem mensagens de uma subscrição de forma idêntica à forma como recebem mensagens de uma fila.

A funcionalidade de envio de mensagens de uma fila é mapeada diretamente para um tópico e sua funcionalidade de recebimento de mensagens é mapeada para uma assinatura. Entre outras coisas, esse recurso significa que as assinaturas suportam os mesmos padrões descritos anteriormente nesta seção em relação às filas: consumidor concorrente, dissociação temporal, nivelamento de carga e balanceamento de carga.

Regras e ações

Em muitos cenários, as mensagens que têm características específicas devem ser processadas de maneiras diferentes. Para habilitar esse processamento, você pode configurar assinaturas para localizar mensagens que tenham propriedades desejadas e, em seguida, executar determinadas modificações nessas propriedades. Embora as assinaturas do Barramento de Serviço vejam todas as mensagens enviadas para o tópico, você só pode copiar um subconjunto dessas mensagens para a fila de assinatura virtual. Essa filtragem é realizada usando filtros de assinatura. Tais modificações são chamadas de ações de filtro. Quando uma assinatura é criada, você pode fornecer uma expressão de filtro que opera nas propriedades da mensagem. As propriedades podem ser as propriedades do sistema (por exemplo, Label) e as propriedades personalizadas do aplicativo (por exemplo, StoreName). A expressão de filtro SQL é opcional neste caso. Sem uma expressão de filtro SQL, qualquer ação de filtro definida em uma assinatura é executada em todas as mensagens dessa assinatura.