Avatar
0
Tran Duy Tung Beginner
Tran Duy Tung Beginner
Cấu hình Async và Cluster cho Kafka
Em chào anh ạ. <p> Hiện tại em đang làm 1 project kết nối giữa kafka và mongodb, em đang thực hiện như sau: </p> <ol start="1"> <li>, application.yml</li> </ol> <div class="markdown-block position-relative overflow-auto source-java"> <pre> spring: mongo: enabled: false hosts: - host: 192.168.101.43 port: 27017 username: chatbot password: chatbot@vtcc authSource: chatbot_platform kafka: bootstrap: servers: 192.168.101.43:9092, 192.168.101.69:9092 topic: name: notification orderName: order topic-json: name: notification orderName: order consumer: group: myGroup orderGroup: orderGroup username: kafka password: 123456aA@ </pre> </div>2., AsyncConfig<div class="markdown-block position-relative overflow-auto source-java"> <pre> <span class="pl-s">@Configuration</span> <span class="pl-k">public</span> <span class="pl-k">class</span> AsyncConfig { <span class="pl-s">@Bean</span>(name = <span class="pl-s">"asyncTask"</span>) <span class="pl-k">public</span> ThreadPoolTaskExecutor asyncTask() { ThreadPoolTaskExecutor executor = <span class="pl-k">new</span> ThreadPoolTaskExecutor(); executor.setCorePoolSize(10); // Số lượng luồng cố định executor.setMaxPoolSize(50); // Số lượng luồng tối đa executor.setQueueCapacity(100); // Số lượng tác vụ chờ trong hàng đợi executor.setThreadNamePrefix(<span class="pl-s">"asyncTask-"</span>); executor.setKeepAliveSeconds(60); executor.initialize(); <span class="pl-k">return</span> executor; } <span class="pl-s">@Bean</span> <span class="pl-k">public</span> ExecutorService asyncExecutor() { <span class="pl-k">return</span> Executors.newCachedThreadPool(); } } </pre> </div>3., Kafka config<div class="markdown-block position-relative overflow-auto source-java"> <pre> <span class="pl-s">@EnableKafka</span> <span class="pl-s">@Configuration</span> <span class="pl-k">public</span> <span class="pl-k">class</span> KafkaConsumerConfig { <span class="pl-s">@Value</span>(<span class="pl-s">"${spring.kafka.bootstrap.servers}"</span>) private String bootstrapAddress; <span class="pl-s">@Value</span>(<span class="pl-s">"${spring.kafka.consumer.group}"</span>) private String consumerGroup; <span class="pl-s">@Value</span>(<span class="pl-s">"${spring.kafka.consumer.orderGroup}"</span>) private String orderGroup; <span class="pl-s">@Value</span>(<span class="pl-s">"${spring.kafka.username}"</span>) private String username; <span class="pl-s">@Value</span>(<span class="pl-s">"${spring.kafka.password}"</span>) private String password; <span class="pl-s">@Bean</span> <span class="pl-k">public</span> ConsumerFactory&lt;String, String&gt; smartNotificationConsumerFactory() { Map&lt;String, Object&gt; props = <span class="pl-k">new</span> HashMap&lt;&gt;(); props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapAddress); props.put(ConsumerConfig.GROUP_ID_CONFIG, orderGroup); props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class); props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class); props.put(ConsumerConfig.SESSION_TIMEOUT_MS_CONFIG, <span class="pl-s">"30000"</span>); <span class="pl-k">if</span> (username != null && password != null) { props.put(<span class="pl-s">"security.protocol"</span>, <span class="pl-s">"SASL_PLAINTEXT"</span>); props.put(<span class="pl-s">"sasl.mechanism"</span>, <span class="pl-s">"PLAIN"</span>); props.put(<span class="pl-s">"sasl.jaas.config"</span>, "org.apache.kafka.common.security.plain.PlainLoginModule required username="" + username + <span class="pl-s">""</span> password="" + password + <span class="pl-s">"";"</span>); } <span class="pl-k">return</span> <span class="pl-k">new</span> DefaultKafkaConsumerFactory&lt;&gt;(props); } <span class="pl-s">@Bean</span> <span class="pl-k">public</span> ConcurrentKafkaListenerContainerFactory&lt;String, String&gt; smartNotificationKafkaListenerContainerFactory( <span class="pl-s">@Qualifier</span>(<span class="pl-s">"asyncTask"</span>) ThreadPoolTaskExecutor executor) { ConcurrentKafkaListenerContainerFactory&lt;String, String&gt; factory = <span class="pl-k">new</span> ConcurrentKafkaListenerContainerFactory&lt;&gt;(); factory.setConsumerFactory(smartNotificationConsumerFactory()); factory.setConcurrency(3); <span class="pl-k">return</span> factory; } } </pre> </div>Vì là lần đầu tiên làm nên em không rõ là với những cấu hình trên thì đã đáp ứng được async và kết nối theo cụm cluster đến kafka chưa ạ. Và làm cách nào để có thể kiểm tra đưọc ạ.<p> Em cảm ơn anh! </p>
Answer
Avatar
0
Nguyễn Hữu Cường Beginner
Tìm kiếm không phân biệt hoa thường, không phân biệt dấu trong Spring Data MongoDB
Với sql em set lại collate để tìm kiếm không phân biệt hoa thường, không phân biệt dấu.<p> Sau khi chuyển sang mongodb, em không biết làm cách nào để tìm kiếm giống sql </p>
Answer
Avatar
0
Tran Duy Tung Beginner
Tran Duy Tung Beginner
Maven - Dependency
Em chào anh ạ. Anh cho em hỏi, em đang có 1 project em chia thành các module nhỏ trong đó có module "common" em dùng mongo-java-driver<div class="markdown-block position-relative overflow-auto source-java"> <pre> &lt;dependency&gt; &lt;groupId&gt;org.mongodb&lt;/groupId&gt; &lt;artifactId&gt;mongo-java-driver&lt;/artifactId&gt; &lt;version&gt;${mongodb.version}&lt;/version&gt; &lt;/dependency&gt; </pre> </div>Bây giờ ở 1 module mới em muốn dùng sang Mongo của Spring mà vẫn muốn dùng các config của common<div class="markdown-block position-relative overflow-auto source-java"> <pre> &lt;dependency&gt; &lt;groupId&gt;com.example.common&lt;/groupId&gt; &lt;artifactId&gt;common&lt;/artifactId&gt; &lt;version&gt;0.0.1-SNAPSHOT&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-data-mongodb&lt;/artifactId&gt; &lt;/dependency&gt; </pre> </div>Vì tính chất không thể thay đổi ở common, vậy có cách nào có thể dùng Mongo của Spring ở module mới mà không bị conflix thư viện với mongo ở module "common" không ạ.<p> Em cảm ơn ạ </p>
Answer
Avatar
0
Duy Tran Beginner
Duy Tran Beginner
Spring khởi tạo Servlet/ Server Port như thế nào
Em chào anh, anh cho em hỏi em đang sử dụng Spring MVC. Em muốn hiểu được Servlet và Server Port khi chạy ứng dụng sẽ được khởi tạo như thế nào. Anh có thể giải thích giúp em được không ạ. Em cảm ơn ạ
Answer
Avatar
0
tvd12 Enlightened
tvd12 Enlightened
Spring: singleton có ý nghĩa gì và tại sao lại phải tạo singleton?
Em chào anh.<p> Em mới mua sách "Làm chủ các mẫu thiết kế kinh điển trong lập trình" của anh. Em thấy ngay phần đầu tiên anh có đề cập đến singleton. Em mới chuyển ngành sang làm dev có một câu hỏi mong anh có thế giải thích ạ. </p> <p> Trong Spring Boot singleton được tạo ra nếu đánh dấu nó là 1 bean, vậy singleton có ý nghĩa gì và tại sao lại phải tạo singleton. Để hiểu cách nó tạo ra thì làm như thế nào được ạ? </p>
Answer
Avatar
0
Vo Thanh Vuong Beginner
Vo Thanh Vuong Beginner
Hướng phát triển
Spring(nên biết thêm những gì), những công nghệ cần biết khi làm việc với spring,...
Answer
Avatar
0
Nguyen Thai Son Beginner
hỏi về Aeron thay cho UDP
e chào a, lâu r em k nc với anh vì em bận cv cá nhân quá trời <p> cho em hỏi a từng tìm hiểu aeron chưa ạ, liệu nó có ổn hơn socket k ạ, cái này nó na ná với UDP, tức là cần tốc độ còn mất data cũng được anh ạ, dùng để lám livestream hoặc game online, k làm chat realtime đc vì nó mất msg </p>
Answer
Avatar
0
Thân Nam Teacher
Thân Nam Teacher
Quản lí log của nhiều service
em chào anh.<p> Em có câu hỏi là trong microservice làm sao để quản lí log của nhiều service cùng lúc ạ. </p> <p> Bình thường là khi 1 service bị lỗi là phải mò vào tìm file log của service đó để kiểm tra đọc log. vậy có thư viện hay tool nào có thể quản lí log của nhiều service k ạ </p>
Answer
Avatar
0
Hoàng Nam Beginner
Hoàng Nam Beginner
lỗi khi tạo project spring boot
e tạo project spring boot gặp lỗi này, mn xem giúp e vs ạ <img src="/api/v1/media/a70f0381708ce5660eabb6a015b1a72b4d1c31c26e6d9b0a35747f053e4ae985.png" alt="loi.PNG">
Answer
Avatar
0
Thân Nam Teacher
Thân Nam Teacher
Mapping request form Json to Xml
Em chào anh.<p> Trong Java mình có thể sử lí mapping request json -> xml để gọi đến 1 service public api dạng soap như thế nào ạ </p> <img src="/api/v1/media/a0c786b3451f2c28bb9317f326e2694e88744819bac78a3dfad57120cc7f8fe4.png" alt="req.png"> <img src="/api/v1/media/c5b5b92a92cb1c5d64c1b0b751e84e37297a9bb52bd31b0f36e8c2e91ee9b97a.png" alt="Annotation 2023-08-04 124459.png">
Answer
Avatar
0
Nguyen Thai Son Beginner
Có nhất thiết dùng swagger
Theo a có nhất thiết dùng swagger thay cho viết document bằng words k ạ
Answer
Avatar
0
Nguyen Thai Son Beginner
[Duplicated]thread và connection
Có thể trc đây em hiểu sai : 1 thread = 1 request. response còn 1 connection là 1 cái kết nối với DB phải không ạ. Vậy 1connection có thể có nhiều thread cùng connect
Answer