Perguntas

1- Cite dois motivos para se utilizar o RabbitMQ em uma aplicação com grande quantidade de acessos.

O RabbitMQ é escalável, permitindo a expansão de seus serviços caso o número de usuários venha a crescer, robusto à falhas, tornando-as transparentes ao usuário e diminuindo a insatisfação do cliente, suporta roteamento flexível, possibilitando a mudança de rotas em caso de problemas de conexão, entre outras vantagens.

2- A linguagem funcional Erlang tem como algumas de suas características o baixo custo computacional para execução dos seus processos e o suporte nativo ao paralelismo. Por que estas características a tornam uma boa opção para a implementação do RabbitMQ?

Por conta destas características, um servidor do RabbitMQ consegue processar uma quantidade gigantesca de pedidos em múltiplas filas de forma eficiente, fator fundamental para o sucesso do projeto.

3- Sabendo que a configuração exactly-once do AMQP é mais custosa computacionalmente para o servidor do que a configuração at-least-once, cite uma situação onde a segunda deveria ser escolhida e uma em que a primeira deveria ser escolhida.

Devemos escolher a configuração at-least-once quando buscamos minimizar o custo de processamento no servidor do RabbitMQ. Em contrapartida, quando este custo não é tão importante quanto o custo de envio de uma mensagem ou de processamento de mensagens repetidas, é mais inteligente se escolher a configuração exactly-once.

4- Qual a característica do RabbitMQ permite que o Instagram sempre atualize o feed dos seguidores de um determinado usuário na ordem em que foram publicados?

Por ser robusto à falhas e por manter a sua estrutura de mensagens em fila, caso uma postagem falhe, a thread responsável irá retornar suas operações do mesmo local da fila, mantendo a ordem inicial.

5- Qual a diferença entre se utilizar o parametro fanout ou o parametro direct em um exchange?

O fanout simplesmente irá receber uma mensagem e enviar para todas enquanto o direct ira enviar somente para os detentores da routing key.

Esconder/Apresentar Menu