Pergunta

Eu quero ligar de alguma tarefa que vai ligar para um IMAP e trazer dados de e-mail para armazenar no banco de dados.

Agora, tal trabalho teria enorme volume de oferecer suporte a muitos IMAP contas.Eu quero aproveitar Akka recursos de cluster que pode executar esses trabalhos em conjunto predefinido de computadores em uma rede e fazer retrials em caso de erros durante a obtenção de dados a partir de IMAP hosts.

Eu quero criar um akka cluster que irá disparar até IMAP buscar trabalho ( através de um Ator ??!!).

IMAP é difícil protocolo, pode falhar ao se conectar ao host remoto.Em suchcase um ator deve repetir várias configurável vezes para ligar e buscar.

Eventualmente, ele deve agir como a minha IMAP buscar back-end.

Como eu devo fazer sobre isso ?

Foi útil?

Solução

Nós usamos a Akka fortemente, incluindo se conectar e processar novas mensagens das contas de e-mail dos usuários usando o Javamail / IMAP. A tolerância a falhas é uma parte importante do quebra-cabeça. Aqui está aproximadamente como nosso backend está configurado:

    .
  1. O nó de supervisor tem um ator que seleciona usuários fora do DB para processamento
  2. IMAP atores de trabalhadores notificam o supervisor quando estão prontos para o trabalho (para mais sobre este "trabalho puxando" arquitetura, consulte o meu colega Ryan Tanner's Blog Post: http://blog.goconspire.com/post/64901258135/AKKA-AT-CONSPIE-PART-5 -o-importância-de-puxando )
  3. supervisor envia uma mensagem de processo - um objeto personalizado, incluindo um token do Gmail OAuth (você pode usar também credenciais de nome de usuário e senha) - para o trabalhador IMAP IMEP.
  4. O trabalhador imap usa javamail para ler e processar novas mensagens. Em um erro, ele envia uma mensagem de processamento com falha - um objeto personalizado, incluindo um código de erro e uma string legível por humanos - de volta ao ator do supervisor. No sucesso, ele envia aparência finalizada.
  5. O supervisor atualiza o registro do usuário no banco de dados, incluindo definir um código de erro se o processamento falhou.
  6. Além de processar periodicamente contas saudáveis, o supervisor tenta processamento para contas com falha. Nosso caso de uso é tal que só tentamos re-processamento uma vez por dia, mas você poderia fazer isso com muito mais frequência.
  7. Usando o agrupamento AKKA, mantemos os trabalhadores separados do supervisor. Combinar essa abordagem com o mecanismo de tração do trabalho descrito acima nos mantém relativamente tolerantes a erros irrecuperáveis, e. OutofmemoryErrors, nos trabalhadores.

Outras dicas

Use javamail.Leia o javamail FAQ .

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