Em ambientes de integração, onde falamos de milhares de transações por dia ou por hora, minuto etc, é muito importante atentar para as atividades que acontecem e com isto tomamos alguma ação, para isto damos o nome de “evento”.

CEP vem de (Complex Event Processing) e ESP (Event Stream Processing), ok, siglas bonitas, para quando preciso usar CEP?

  • Imagine processar milhões de verificações por dados de objetos e com base nissso tomar algumas decisões, seja para monitoração ou gerar eventos que executem outras atividades.
  • CEP e ESP estão focados em processamento de grandes volumes.
  • É fácil confundir CEP com RulesEngines, mas uma coisa é o Pattern Matcher e outra coisa é o processamento de grandes volumes de informações de objetos, ainda que numa janela de tempo, onde alguns Garbage Collectors tenham sido executados.
  • Como os produtos de CEP têm implementações de Pattern Matching não tão poderosas, a idéia é juntar o poder de do Drools (Engine Rules) e CEP.

Vamos imaginar um cenário de atividades de transito, como um evento : “O veículo mudou de jurisdição”, quais os fatores estão envolvidos?

  1. Exemplo, meu carro é licenciado no Detran-Rio Grande do Sul (claro que este processo é apenas de exemplo)
  1. O Detran-SP envia todas as multas aplicadas no estado de SP para um broker do Denatran (por exemplo um ESB ou um SCA)
  2. O Denatram envia num mês milhões de transações enviando todas as multas para as jurisdições regionais
  3. O Detran-RS recebe um grande lote de notificações
  4. Dessas notificações que foram processadas, por hipótese (claro :) ), há várias infrações do meu veículo num periodo de 2 anos.
  5. Podemos chegar a conclusão que este veículo pode ter mudado de jurisdição e uma notificação via e-mail poderia ser enviado para o proprietário.

A grande questão acima, não é a apenas a regra, mas o volume de transações, sendo assim, o uso de CEP aliado a um ESB, é algo que particularmente me chama a atenção, um barramento de serviços aliado a algo além de um simples BAM.

O Drools em suas próximas versões estará suportando CEP, nosso amigo brasileiro Edson Tirelli entre as muitas coisas, está trabalhando exatamente nestes aspectos no momento, tive acesso a um trunk que já contempla algumas coisas relacionadas a CEP já no Drools.

Se você tiver um maior interesse, recomendo utilizar a mesma implementação que tenho usado para estudo, que é o Esper, que inclusive tem uma versão a Java, e uma .net.

Bons estudos

E

2 Responses to “CEP(Complex Event Processing) e ESP(Event Stream Processing)”

  1. Alessandro Lazarotti says:

    Olá Edgar. Vc comentou hoje comigo no FalandoEm Java sobre o CEP. Realmente parace bem performático mas algo pra mim ficou nebuloso sobre a estratégia de se lidar com o manipulador de eventos. Quando vc precisa de uma massa tremenda de dados, como que vc citou, não seria interessante que a própria extração de dados da plataforma de persistência seja mais “inteligente” do que tratar isso somente depois?

  2. Edgar Silva says:

    @Alessandro

    Se você tiver a chance de Persistir sim, mas imagine processos em memória podem ser um exemplo. A idéia é que as ferramentas de persistência possam fazer isso, mas hoje isto não é realidade. Além do que vc acaba aglutinando um funcionalidade que está em conceito diferente, essa é a minha visão :)

Leave a Reply