O desafio pode ser acessado no seguinte endereço.
Para instalar o docker engine seguir as instruções.
Para instalar o docker compose seguir as instruções.
Para iniciar o Kafka
docker-compose up broker connect control-center schema_registry zookeeper
Endereços:
Os dados dos sensores no exemplo são coletados e agrupados em um tópico do Kafka.
Para iniciar a simulação da coleta de dados dos sensores:
curl -X POST http://localhost:8083/connectors -H 'Content-Type:application/json' -H 'Accept:application/json' -d @hackathon-service/src/main/resources/avro/noise.json
Para parar a simulação da coleta de dados dos sensores:
curl -X DELETE http://localhost:8083/connectors/datagen-noise-sensor
Pode-se optar pelo uso de json na coleta de dados dos sensores:
curl -X POST http://localhost:8083/connectors -H 'Content-Type:application/json' -H 'Accept:application/json' -d @hackathon-service/src/main/resources/avro/noise-json.json
Para parar a simulação da coleta de dados dos sensores em json:
curl -X DELETE http://localhost:8083/connectors/datagen-noise-json-sensor
Para fazer a integração com o java pode ser usada o Spring Cloud Stream com o Kafka Binder
Segue exemplo de configuraração do Spring Cloud Stream no application.yaml:
spring:
cloud:
stream:
bindings:
noiseSensorConsumer-in-0:
destination: noise-sensor
consumer:
useNativeDecoding: true
kafka:
bindings:
noiseSensorConsumer-in-0:
consumer:
configuration:
value.deserializer: io.confluent.kafka.serializers.KafkaAvroDeserializer
schema.registry.url: http://schema_registry:8081
specific.avro.reader: true
kafka:
bootstrap-servers: broker:9093
Exemplo de consumidor:
@Configuration
public class StreamConfig {
@Bean
public Consumer<NoiseSensor> noiseSensorConsumer(SimpMessagingTemplate simpMessagingTemplate) {
return new NoiseSensorStreamService(simpMessagingTemplate);
}
}
public class NoiseSensorStreamService implements Consumer<NoiseSensor> {
@Override
public void accept(NoiseSensor noise) {
System.out.println(noise.getSensor());
}
}
Para fazer a integração com o php pode ser usada o PHP Client com a geração de eventos em json.
Para iniciar o Projeto de exemplo
docker-compose up hackathon-service
docker-compose up hackathon-client
Endereços:
O Elasticsearch com o Kibana pode ser usado para a visualização dos dados e armazenamento dos dados
docker-compose up elasticsearch kibana
Endereços:
Tecnologias:
Outros clientes do Apache Kafka: