зеркало из
				https://github.com/iharh/notes.git
				synced 2025-10-31 05:36:08 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			124 строки
		
	
	
		
			6.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			124 строки
		
	
	
		
			6.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| Confluent
 | |
| https://www.youtube.com/channel/UCmZz-Gj3caLLzEWBtbYUXaA/videos
 | |
| Kafka Summit 2017:
 | |
| https://www.youtube.com/watch?v=ySf7bDBHRUQ
 | |
| 
 | |
| 2025
 | |
| JPoint - Golovko - Spring Kafka - How not to Shoot a Foot 25:00 of 46:18
 | |
|     https://www.youtube.com/watch?v=9r80FRcKGCA
 | |
|     ! 10:00 ack=all setting !!!
 | |
|     ! 12:00 @Bean DefaultKafkaProducerFactoryCustomizer serializerCustomizer(ObjectMapper objectMapper) {
 | |
|     !   var jsonSerializer = new JsonSerializer(objectMapper);
 | |
|     !   return producerFactory -> producerFactory.setValueSerializer(jsonSerializer);
 | |
|     ! }
 | |
|     ! 12:30 listener i-faces:
 | |
|     !   MessageListener
 | |
|     !   AcknowledgingMessageListener
 | |
|     !   ConsumerAwareMessageListener
 | |
|     !   AcknowledgingConsumerAwareMessageListener
 | |
|     ! 13:30 @Bean KafkaMessageListenerContainer<String, OtpDto> kafkaListenerContainer(
 | |
|     !                                                             ConsumerFactory<String, OtpDto> factory,
 | |
|     !                                                             MessageListener<String, OtpDto> listener) {
 | |
|     !   var containerProperties = new ContainerProperties(MY_TOPIC);
 | |
|     !   containerProperties.setMessageListener(listener);
 | |
|     !   return new KafkaMessageListenerContainer<>(factory, containerProperties);
 | |
|     ! } # it is single-threaded and very agile (gibkiy)
 | |
|     ! 16:00
 | |
|     !   props.put(JsonDeserializer.TYPE_MAPPINGS, "some.package.dto.OtpDto:" + OtpDto.class.getCanonicalName());
 | |
|     ! 17:00 - manual dserialization:
 | |
|     !   props.put(JsonDeserializer.USE_TYPE_INFO_HEADERS, false);
 | |
|     !   props.put(JsonDeserializer.VALUE_DEFAULT_TYPE, OtpDto.class.getCanonicalName());
 | |
|     ! 18:00 ConcurrentMessageListeningContainer<String, OtpDto> kafkaListenerContainer(...) {
 | |
|     !   ...; container.setConcurrency(4);  // for KafkaMessageListenerContainer
 | |
|     ! }
 | |
|     ! 19:00 var ... = new ErrorHandlingDeserializer(jsonDeserializer);
 | |
|     ! 20:00 var recoverer = new DeadLetterPublishingRecoverer(template);
 | |
|     !   var errorHandler = new DefaultErrorHandler(recoverer);
 | |
|     !   listenerContainer.setCommonErrorHandler(errorHandler);
 | |
|     ! 22:00 it would be good to have distinct DLTs for distinct types of ex-s
 | |
|     !   @Bean public CommonErrorHandler commonErrorHandler(KafkaTemplate<byte[], byte[]> deserializationDltTemplate,
 | |
|     !                                                      KafkaTemplate<String, OtpDto> otpKafkaTemplate) {
 | |
|     !     CommonErrorHandler defaultErrorHandler = defaultErrorHandler(otpKafkaTemplate);
 | |
|     !     var delegatingErrorHandler = new CommonDelegatingErrorHandler(defaultErrorHandler);
 | |
|     !     delegatingErrorHandler.setErrorHandlers(errorHandlingDelegates(deserializationDltTemplate));
 | |
|     !     return delegatingErrorHandler;
 | |
|     !   }
 | |
|     ! 24:00 
 | |
|     !   private CommonErrorHandler defaultErrorHandler(KafkaTemplate<String, OtpDto> otpKafkaTemplate) {
 | |
|     !     return new DefaultErrorHandler(
 | |
|     !       new DeadLetterPublishingRecoverer(otpKafkaTemplate),
 | |
|     !       new FixedBackOff(0, 2));
 | |
|     !   }
 | |
|     ! 24:30 -//- errorHandlingDelegates impl -//-
 | |
| 
 | |
| JavaGuru - Apache Kafka of p28
 | |
|     https://www.youtube.com/playlist?list=PLt91xr-Pp57Q50WsXz9r-zmxy5ceu_hp_
 | |
| 2024
 | |
| Otus - Kafka and ClickHouse of 1:41:20
 | |
|     https://www.youtube.com/watch?v=Jp1SEm4UU48
 | |
|     ! 49:00 - ClickHouse Kafka Connect Sink
 | |
|     ! 52:00 - REST Api for Kafka Connectors
 | |
|     ! 1:00:00 - Debezium Docker image for pg
 | |
| Spectr - Koreysha - Apache Kafka Typical Erors of 54:46
 | |
|     https://www.youtube.com/watch?v=FGETRVOPdiA
 | |
|     https://drive.google.com/file/d/1APmfDCMIDXStkR5uld5LlbdC2N3Lxho6/view
 | |
|     ! 34:00 session.timeout.ms, heartbeat.interval.ms, max.poll.interval.ms
 | |
| ByteByteGo - System Design: Why is Kafka so Popular? of 4:19
 | |
|     https://www.youtube.com/watch?v=yIAcHMJzqJc
 | |
| SelskiJavist - Kafka Fundamentals 0:00 of 2:09:05
 | |
|     https://www.youtube.com/watch?v=YluvsLmPU78
 | |
|     ! producer/consumer related
 | |
|     at-least-onece, at-most-once, fixing offset, a lot of props
 | |
|     transactions, partitions direct manip-n
 | |
| 2023
 | |
| Otus - Petrelevich - Working with Kafka in Boot apps 20:00 of 54:12
 | |
|     https://www.youtube.com/watch?v=9FikRH8rXas
 | |
| 2022
 | |
| SpringDeveloper - Long - Spring Tips: Spring Boot & Apache Kafka of 42:58
 | |
|     https://www.youtube.com/watch?v=DJHUNSGh3K0
 | |
|     ! 2:00 - Kafka is not a msg-system, but distributed log with almost linear scalability
 | |
| Slurm - Obkafkilsya 0:00 of 1:06:43
 | |
|     https://www.youtube.com/watch?v=5Sf8nKRQc8Y
 | |
| Slurm - Programming with Kafka 0:00 of 1:23:33
 | |
|     https://www.youtube.com/watch?v=ey2QE_mPVpQ
 | |
| 2021
 | |
| https://drive.google.com/drive/folders/1GyQkciZbOY6fbGpn6OIp1iZswOWiL8bq
 | |
| Shevlyagin - Apache Kafka Workshop of 1:25:30
 | |
|     https://www.youtube.com/watch?v=W-wr4Fxmjsc
 | |
|         https://github.com/vitshevl/kafka-demo
 | |
| Bogdanovskiy - Kafka Fundamentals of 49:22
 | |
|     https://www.youtube.com/watch?v=-AZOi3kP9Js
 | |
| Korolkov - Rabbit 0:00 of 1:09:39
 | |
|     https://www.youtube.com/watch?v=ijR2VXgSQO4
 | |
|         https://github.com/kaa-ghub/spring-cloud-stream-demo
 | |
| 2019
 | |
| https://habr.com/ru/company/jugru/blog/451268/
 | |
|     https://speakerdeck.com/jugmsk/viktor-gamov-kafka-streams-iq-zachiem-nam-baza-dannykh-nam-baza-nie-nuzhna
 | |
| https://inponomarev.github.io/kstreams-examples/#/
 | |
| https://www.infoq.com/presentations/kafka-pks
 | |
| 2018
 | |
| Waehner - Introduction to Apache Kafka as Event-Driven Open Source Streaming Platform
 | |
| https://www.youtube.com/watch?v=OXLABLRNuzI
 | |
| HighLoadChannel - Vybornov - Kafka in HighLoad ru of 37:49
 | |
|     https://www.youtube.com/watch?v=BtmYjTO1EpI
 | |
|     ! The only way to provide exactly-once semantics is to atomically save both offsets and data outside of kafka
 | |
|     ! 18:00 - manual leaders assign for part-s
 | |
|     ! 19:00 - increase replication (paradoxal, but strangely works fine)
 | |
| 2017
 | |
| Ward - Introduction to Apache Kafka
 | |
| https://www.youtube.com/watch?v=UEg40Te8pnE
 | |
| Stopford - Power of the Log: LSM and Append Only Data Structures
 | |
| https://www.infoq.com/presentations/lsm-append-data-structures
 | |
| Reis - Functional Streams with Kafka
 | |
| https://www.slideshare.net/LuisMiguelReis2/functional-streams-with-kafka-a-comparison-between-akkastreams-and-fs2
 | |
| https://www.youtube.com/watch?v=fwQMdxYPRIo
 | |
| 
 | |
| https://www.infoq.com/presentations/kafka-spring
 | |
| https://www.youtube.com/watch?v=l8V6PkVV1Ec
 | |
| 
 | |
| 2016
 | |
| https://www.slideshare.net/SpringCentral/i-cant-believe-its-not-a-queue-using-kafka-with-spring
 | |
| https://www.slideshare.net/SpringCentral/spring-for-apache-kafka
 | |
| Narkhede
 | |
| https://www.infoq.com/presentations/etl-streams
 | 
