Onde posso ligar para WCF para ser notificado quando uma mensagem chega?
-
03-07-2019 - |
Pergunta
Eu estou escrevendo um host de serviço de console exemplo e eu quero ligar para WCF pilha para ser capaz de imprimir uma mensagem ao console quando nova mensagem chega, mesmo que ele não vai ficar processado pelo serviço no momento (porque serviço está trabalhando em chamadas anteriores). Isto é baseado em minha suposição de que as mensagens que chegam get na fila pelo WCF, que é correto?
Além disso, estou usando netTcpBinding se isso é importante.
Solução
Você poderia escrever um canal personalizado e introduza-o na pilha de canal em qualquer ponto desejado. Queuing acontece em ChannelListeners, que ficam entre cada canal:
ChannelListener_1 -> CHANNEL_1 -> ChannelListener_2 -> Channel_2 -.> Etc
Então, se você fosse para introduzir seu próprio ouvinte de canal / canal você pode ligar para qualquer parte do processo que você precisa. Nota, contudo, que o conteúdo da mensagem não pode ser lido até que fique mais abaixo na pilha e é descriptografado.
Outras dicas
Você provavelmente tem que escrever um canal personalizado para isso. Confira WCF Canais Mini Book