Pergunta

Preciso criar um serviço que possa processar solicitações na fila em um intervalo de tempo configurado. Por exemplo, vá para a Web e obtenha dados financeiros de um site, exige que limitemos solicitações uma vez por segundo. Sou novo no WCF e não tenho certeza se (1) WCF com MSMQ é uma escolha adequada para implementar isso? e (2) se sim, qual é o melhor mecanismo para aplicar o intervalo? Um tópico espera? Um cronômetro (não tenho certeza de como isso funcionaria).

Foi útil?

Solução

Não há nada embutido no WCF que permitiria que você lide com isso explicitamente, para que você ainda precise fazer todo o trabalho.

Embora seu serviço certamente possa processar solicitações do MSMQ, os ouvintes MSMQ no WCF escolherão e processarão mensagens o mais rápido possível; Você não pode configurá -los para processar mensagens a cada x segundos apenas (você pode fingir, dadas as ferramentas certas, mas parece -me que não seria tão bom assim).

Uma opção se o seu atraso entre as solicitações de processamento não for muito curto, seria usar uma fila intermediária para manter solicitações pendentes. Ou seja, o que envia as solicitações reais as grava para uma fila que ninguém está ouvindo diretamente (fila A), enquanto seu serviço WCF ouve em uma fila diferente (fila B). Em seguida, tenha outra coisa (pode ser tão simples quanto um script executado no agendador de tarefas) que é executado uma vez a cada x segundos/minutos/o que quer que seja e mova apenas 1 mensagem da fila A para a fila B, desencadeando assim o serviço WCF real para executar.

Outras dicas

WCF e MSMQ são uma ótima equipe! Definitivamente vale a pena conferir.

A parte que o WCF não fornece fora da caixa é a "verificação a cada x segundos". A melhor abordagem aqui seria hospedar seu serviço WCF dentro de um serviço Windows NT e ter um cronômetro dentro do serviço NT que vai verificar a fila MSMQ apenas uma vez a cada x segundos. Não deveria ser muito difícil de implementar, realmente. A beleza é: você pode facilmente se auto -hospedar um serviço WCF dentro de um serviço NT - apenas algumas linhas de código e obtém controle completo sobre o que está acontecendo e quando. Veja o MSDN Docs em Como hospedar um serviço WCF em um aplicativo gerenciado para detalhes.

Recursos:

Ou você pode apenas usar um serviço de janela para consumir as mensagens. Se você não estiver usando a funcionalidade do WCF de consumir uma mensagem assim que ela for postada, provavelmente não terá motivos para usar o WCF em primeiro lugar

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top