Avatar
1
Trần Văn Dũng Beginner
Xây web bán lẻ
<div class="markdown-block">Em chào mọi người ạ. Hiện tại em đang xây 1 web bán lẻ sử dụng cho 4 cơ sở kinh doanh. Nhưng vẫn còn khá nhiều thắng mắc về chi phí vận hành khi đưa lên production và những thứ em cần trả phí là gì và trong tầm giá bao nhiêu ạ. Mong anh/chị đã có kinh nghiệm giải đáp giúp em ạ.</div>
Answer
Avatar
0
VV Beginner
VV Beginner
Cấu trúc dự án
<div class="markdown-block">Cho em hỏi trong 1 dự án Spring boot. Thì sẽ Controller -&gt; Service -&gt; RepoVậy trong Service luôn gọi qua Service khác. hay gọi qua repo khác thì ổn hơn ạ.Ví dụ: Service A có repo A, service B, repo C, D.. vì chỉ gọi những câu jpa đơn giản. Best practice thì sẽ như nào ạ</div>
Answer
Avatar
0
VV Beginner
VV Beginner
Api có gửi file dùng spring boot
<div class="markdown-block">Cần truyền xuống thông tin là 1 list Customer gồm: name, type, và 1 danh sách Document gồm documentType và file public class CustomerInfo {private String customerName;private String customerType; files;}public class CustomerFileDTO {private String documentType;private MultipartFile file;}Cách nào là tối ưu nhất để xử lý đưa list customer này xuống và lấy được file vậy ạ. Cho e xin cách truyền request xuống dễ xử lý với ạ. list customer này max size =5 vì nó đẩy xuống để lưu thông tin của 1 phiếu xử lý</div>
Answer
Avatar
0
Trần Văn Dũng Beginner
Gửi Nhận Cookie Từ Backend Và Frontend Khác Domain
<div class="markdown-block">Xin chào mọi người, hiện tại em làm một project cá nhân chạy trên localhost với spring và html thuần. Ở phía backend(port:8080) và frontend(port:8085) và cả 2 em đều đã cấu hình chạy trên https (<a href="https://localhost).Em" class="markdown-link" target="_blank">https://localhost).Em</a>có case như sau, khi thực hiện login từ backend em có set cookie như thế này:</div><div class="markdown-block">private void setTokenCookie(String tokenType, String token, long ttl, HttpServletResponse servletResponse) {</div><div class="markdown-block">if (servletResponse == null) {</div><div class="markdown-block">throw new AppException(ErrorCode.INTERNAL_SERVER_ERROR, "HttpServletResponse is null");</div><div class="markdown-block">}</div><div class="markdown-block">ResponseCookie tokenCookie = ResponseCookie.from(tokenType, token)</div><div class="markdown-block">.httpOnly(true)</div><div class="markdown-block">.secure(true) </div><div class="markdown-block">.path("/")</div><div class="markdown-block">.maxAge(Duration.ofSeconds(ttl))</div><div class="markdown-block">.sameSite("None")</div><div class="markdown-block">.build();</div><div class="markdown-block">servletResponse.addHeader("Set-Cookie", tokenCookie.toString());</div><div class="markdown-block">}</div><div class="markdown-block">Tiếp theo khi thực hiện logout:</div><div class="markdown-block">const response = await fetch(logoutApiUrl, {</div><div class="markdown-block">method: "POST",</div><div class="markdown-block">credentials: "include",</div><div class="markdown-block">headers: {</div><div class="markdown-block">"Content-Type": "application/json",</div><div class="markdown-block">Authorization: <code class="markdown-inline markdown-inline-code">Bearer </code>,</div><div class="markdown-block">},</div><div class="markdown-block">});</div><div class="markdown-block">private</div>
Answer
Avatar
0
VuVo Beginner
VuVo Beginner
Spring JPA
<div class="markdown-block">Hiện e đang sửa máy nên em ko test được thực tế. cho e hỏi hàm YEAR() trong spring data jpa để trong @Query như vậy có hoạt động không ạ, em đang dùng spring boot 3.3.x và db postgresql ạ @Query("SELECT trans FROM Transaction trans WHERE YEAR(trans.tDate) = :year ") findByYear(@Param("year") int year, Pageable pageable);</div>
Answer
Avatar
0
VuVo Beginner
VuVo Beginner
traceId kafka spring boot
<div class="markdown-block">Em đang dùng spring boot 3.4.3 jdk 21, và kafka, khi lắng nghe kafka và gọi api ở service thì muốn nó tự động có traceId graylog thì làm như nào ạ. api thì nó tự động có traceId nhưng khi tự lắng nghe từ kafka lại ko có ạ.</div>
Answer
Avatar
0
a83raljj7lgom9gm Beginner
Config nhiều datasource
<div class="markdown-block">Em đang dùng spring boot 2.7. x. e cần config 2 data source vào ạ. Một DB em dùng mặc định config như bình thường ở properties và map với entity và repo của em. Một DB em chỉ dùng map với1 tới 2 DAO gọi native query. Anh có config sample cho em xin hướng dẫn với ạ. Có phải em chỉ cần config 1 cái cho datasource phụ thôi, còn cái default chính của em thì spring boot cũng đã config và ưu tiên cái đó không ạ. Em cũng muốn config trong properties và java. Không config xml ạ</div>
Answer
Avatar
0
a83raljj7lgom9gm Beginner
Tối ưu xử lý
<div class="markdown-block">Em có câu query cần Union All 2 bảng lại để lấy data trả về 1 chuỗi data của các cột nối nhau bằng dấu |ví dụ: username|code|name|.....Số lượng reocord lúc query ra thì 1M record. Em đang dùng Spring boot. Theo anh thì nên giới hạn số lượng mỗi lần query lên rồi gọi nhiều lần xuống DB. Hay là gọi 1 lần thì hơn ạ. Data em bắt buộc lấy đủ . Và em nên nối chuỗi bằng câu native query hay là lấy dữ liệu lên rồi xử lý bằng Java hơn ạ. để xử lý và zip lại thành file data trả về luôn. Hướng xử lý tối ưu nhất là gì ạ a.</div>
Answer
Avatar
0
a83raljj7lgom9gm Beginner
Kiểm tra tối đa request trong ngày trên 1 thiết bị
<div class="markdown-block">Em có làm 1 web không yêu cầu login, nhưng khi đẩy form xuống BE thì BE phải check là tối đa 1 thiết bị trong 1 ngày chỉ được 3 request. Có cách nào check vấn đề này được ko ạ. nếu em dùng tab ẩn danh, hay ip động hay có cách nào khác nó có thể spam được không ạ. Em chưa có hướng code cho đoạn này.</div>
Answer
Avatar
0
a83raljj7lgom9gm Beginner
Tối ưu xử lý khi data nhiều
<div class="markdown-block">Em có 1 service api dùng spring boot gọi xuống DB để lấy data lên, data này có cỡ 1 triệu record. Web dùng spring boot MVC gọi api qua service đó để lấy data và down xuống file txt theo từng dòng và nén nó thành file zip. Service đó xử lý lâu dẫn tới timeout, có cách nào để tối ưu ở service và web của em không ạ.</div>
Answer
Avatar
0
Dev Mới Beginner
Dev Mới Beginner
Không hiểu kiểu gì luôn?
<div class="markdown-block">Hi anh Dũng, cả nhà mình,Em đang gặp vấn đề như sau:Lưu 1 object xuống db, sau đó dùng id của object đó push vào kafka, đoạn code mô tả bên dưới:var saveResult = this.repo.saveAndFlush(entity);this.kafkaTemplate.send(topic, saveResult.getId());Tuy nhiên khi listen topic trên thì thi thoảng vẫn có những trường hợp em gọi hàm findById bị not found. Vậy có phải là việc listen topic trên diễn ra trước lúc transaction được commit ko nhỉ? Và cũng xin mọi người cách để giải quyết bài trên ạ(Em đang dùng spring boot cả nhà ạ)</div>
Answer
Avatar
0
Tran Duy Tung Beginner
Tran Duy Tung Beginner
Cấu hình Async và Cluster cho Kafka
<div class="markdown-block">Em chào anh ạ. 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: , application.yml</div><div class="markdown-block">spring:</div><div class="markdown-block">mongo:</div><div class="markdown-block">enabled: false</div><div class="markdown-block">hosts:</div><ul class="markdown-list"><li class="markdown-list-item"><div class="markdown-list-item-content"> host: 192.168.101.43</div><div class="markdown-block">port: 27017</div></li></ul><div class="markdown-block">username: chatbot</div><div class="markdown-block">password: chatbot@vtcc</div><div class="markdown-block">authSource: chatbot_platform</div><div class="markdown-block">kafka:</div><div class="markdown-block">bootstrap:</div><div class="markdown-block">servers: 192.168.101.43:9092, 192.168.101.69:9092</div><div class="markdown-block">topic:</div><div class="markdown-block">name: notification</div><div class="markdown-block">orderName: order</div><div class="markdown-block">topic-json:</div><div class="markdown-block">name: notification</div><div class="markdown-block">orderName: order</div><div class="markdown-block">consumer:</div><div class="markdown-block">group: myGroup</div><div class="markdown-block">orderGroup: orderGroup</div><div class="markdown-block">username: kafka</div><div class="markdown-block">password: 123456aA@</div><div class="markdown-block">, AsyncConfig</div><div class="markdown-block">@Configuration</div><div class="markdown-block">public class AsyncConfig {</div><div class="markdown-block">@Bean(name = "asyncTask")</div><div class="markdown-block">public ThreadPoolTaskExecutor asyncTask() {</div><div class="markdown-block">ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();</div><div class="markdown-block">executor.setCorePoolSize(10); // Số lượng luồng cố định</div><div class="markdown-block">executor.setMaxPoolSize(50); // Số lượng luồng tối đa</div><div class="markdown-block">executor.setQueueCapacity(100); // Số lượng tác vụ chờ trong hàng đợi</div><div class="markdown-block">executor.setThreadNamePrefix("asyncTask-");</div><div class="markdown-block">executor.setKeepAliveSeconds(60);</div><div class="markdown-block">executor.initialize();</div><div class="markdown-block">return executor;</div><div class="markdown-block">}</div><div class="markdown-block">@Bean</div>
Answer