Page History
...
Warning |
---|
생성후 KAFKASUFACE가 활성화되는지 체크합니다. ( 저의경우 기본플랜으로 선택하였다가 한번의 삽질후리전변경및 여러번 실패후, 상위 플랜으로 조정하니 재생성하여 활성화가 되었습니다. -모든 리전지원합니다. ) |
액터모델을 통해 Kafka 메시지 생성 - 닷넷코어전용
...
EventHub셋팅이 끝났으면, 닷넷 코어 어플리케이션을 통해 Auzre 이벤트 허브에 메시징을 생산하는 시도를 해보겠습니다.
사전준비
AkkaDotModule은 AKKA.net을 포함 KAFKA사용을 조금더 쉽게 한 모듈입니다.
...
( 실제 테스트성공한 문자열을 Full공유하는 이유는 , 듀토리얼들이 접속문자열이 접속문자열의경우 보안의 문제로 마스킽처리가 마스킹처리가 되는데, 그 비밀을 알기위한 삽질방지입니다.)삽질방지를 위한 접속가능한 정보를 모두 공개합니다.)
SSL을 위한 Global Root 인증서 : https://github.com/psmon/AkkaDotModule/blob/master/AkkaDotBootApi/cacert.pem
접근보안추가
공유할수 있는이유는공개할수 있는 주요 이유는, IP Base로 사용할수 있는 네트워크를 한번더 걸어 놓았습니다.
Ip허용을 추가로 걸어놓았기때문에 , 접속 String을 알고 있다고 하더라도 전송하지 못합니다. ( 2중보안 - 2중보안이 권장되며, 공격대응에 비용이증가하는지 검토못하였으니 공격은 하지말아주세요 - 비용의 문제로 곧 삭제예정입니다.)
...
EventHub에 Kafka모드로 메시지 생산하기
EventHub(Kafka)에 가장 심플한 방식으로 전송되게 하려고 노력하였으며
아래와같이 사용하면 되겠습니다. Kafka와 호환되며 SecurityOption이 없으면 비SSL모드로 작동합니다.
Code Block | ||
---|---|---|
| ||
var producerAkkaOption = new ProducerAkkaOption() { BootstrapServers = "webnori-kafka.servicebus.windows.net:9093", ProducerName = "webnori-kafka", SecuritOption = new KafkaSecurityOption() { SecurityProtocol = SecurityProtocol.SaslSsl, SaslMechanism = SaslMechanism.Plain, SaslUsername = "$ConnectionString", SaslPassword = "Endpoint=sb://webnori-kafka.servicebus.windows.net/;SharedAccessKeyName=kafka-client;SharedAccessKey=PfL0qRUm50AXZHRXLiVfnatIRI3OqAh+dT6Owsqrd2M=", SslCaLocation = "./cacert.pem" } }; string producerActorName = "producerActor"; var producerActor= AkkaLoad.RegisterActor(producerActorName /*AkkaLoad가 인식하는 유니크명*/, actorSystem.ActorOf(Props.Create(() => new ProducerActor(producerAkkaOption)), producerActorName /*AKKA가 인식하는 Path명*/ )); producerActor.Tell(new BatchData() { Data = new KafkaTextMessage() { Topic = "akka100", Message = "testData" } }); |
샘플 코드 :
- 활용하기 : https://github.com/psmon/AkkaDotModule/blob/master/AkkaDotBootApi/Test/TestAkka.cs
- 실구현체 : https://github.com/psmon/AkkaDotModule/blob/master/AkkaDotModule/ActorUtils/Confluent/ProducerActor.cs
닷넷코어 API 에서 액터모델과 연동하여 EventHub에 카프카 모드로 전송
Auzre에서 Kafka 매트릭 모니터링을 기본으로 해줘서, 별도의 모니터링 시스템을 구축안해도되는게 장점인것같네요
메시징을 생산하여, 모니터링 시스템이 반응하여 메시징이 추가되면 연결및 구현성공입니다.
샘플코드 : https://github.com/psmon/AkkaDotModule/blob/master/AkkaDotBootApi/Controllers/KafkaController.cs
Code Block | ||
---|---|---|
| ||
<PackageReference Include="Confluent.Kafka" Version="1.5.2" /> |
Confluent.Kafka를 액터에 연결하여 전송하였으며, Actor모델을 사용안할시 위 모듈을 직접 이용하여
EventHub(Kafka)에 생산및 소비처리가 가능합니다.
Info | ||
---|---|---|
| ||
ProducerActor 만 작성하였는데, 시간이 되면 1.0.9에서는 ConsumerActor 작성예정입니다. |
참고링크
- 전송 모듈의 소스 : https://github.com/psmon/AkkaDotModule
- MS-원본문서 : https://docs.microsoft.com/ko-kr/azure/event-hubs/event-hubs-about
- 레거시 모듈로 사용하기 : https://docs.microsoft.com/ko-kr/azure/event-hubs/event-hubs-dotnet-standard-get-started-send-legacy
- Kafka-Docker-AkkaStream Mode : KAFKA 닷넷코어에서 쉽고강력하게 활용하기
- AKKA.net Stream : https://getakka.net/articles/streams/introduction.html
- Kafka-Security : https://springboot.cloud/31
- 공유 Access 서명 : https://docs.microsoft.com/ko-kr/azure/event-hubs/authenticate-shared-access-signature
...