THẢO LUẬN

Jul 8th, 2022 6:26 a.m.

Cùng tìm hiểu về shbet nhé. KIến thức rất hữu ích cho các bạn. Tham gia ngay nhà cái lớn nhất Châu Á :

đăng nhập shbet đăng ký shbet

0
Jul 8th, 2022 6:24 a.m.
0
Jul 8th, 2022 6:22 a.m.

KIến thức rất hữu ích cho các bạn. Tham gia ngay nhà cái lớn nhất Châu Á :

đăng nhập shbet đăng ký shbet

0

Bài viết rất hữu ích dành cho các bạn mới đi làm. Hãy tham gia ngay trang casino uy tín nhất Châu Á hiện tại. image.pngđăng nhập shbet đăng ký shbet

0

bài viết khá ok bạn ạ

0
Jul 8th, 2022 3:08 a.m.

!otherArr.includes(v) nếu bằng true thì thực hiện câu lên bên phải && ngược lại thì không nha bn

0

bạn xem bài 12 nhé

0

Cảm ơn chia sẻ rất chi tiết của bạn

0

Chào bạn. Cho mình hỏi làm sao để connect ssh với cái ec2 mình vừa tạo. Ví dụ mình muốn cài docker va docker compose, thì bắt buộc phải cài luôn trong file bash.sh à. Thanks.

0

Anh ơi anh có thể ra 1 bài viết phân tích sự khác nhau giữa Stream và Thread ko?

0

Uầy vừa giải thích đơn giản vừa hay ho, đỉnhhhhhh quá anh ơi

0
Jul 7th, 2022 9:33 a.m.

@datbv Em cảm ơn anh em đã hiểu rồi ạ !

0
Jul 7th, 2022 8:20 a.m.

hi em,

Anh hiểu câu hỏi của em là sau khi order-service gửi event sang payment-service yêu cầu thanh toán, payment-service thực hiện business nhưng bị exception (app crash/lost connection to database....). Lúc này xảy ra tình huống mất message như em nói, trong khi expect next event SUCCESS/FAIL. Trường hợp này xử lý thế nào? Có đúng em định hỏi thế này không?

Em đọc bài trước của anh phần handle exception nhé. Vấn đề của em nói nó không phụ thuộc vào transaction outbox nữa mà nó là vđề của việc handle business exception. Có 2 cách: 1 là retry và 2 là cancel. Nhưng chung quy lại nó sẽ là vấn đề của việc event phải lưu ở đâu để đảm bảo k mất event, để khi exception xảy ra (app crash, lost connection...) thì hệ thống vẫn consume lại đc event đó để xử lý tiếp. Nên vấn đề sẽ chỉ còn là việc event được lưu ở đâu để đảm bảo 2 tính chất: ordering và durability.

Cái này thì nó lại là bài toán khác không liên quan đến Outbox. Nên mình sẽ quay về xử lý việc store event nhé, nếu là anh anh sẽ sử dụng Kafka làm message broker vì nó support việc replay message trong trường hợp exception. Em có thể đọc thêm series Kafka của a để hiểu rõ hơn. Đại khái là ở TH1 như em nói thì mấu chốt là cần consume lại chính event đó để retry -> đã đc giải quyết = Kafka.

Còn TH2 nếu em dùng transactionless thì việc rollback thế nào em phải handle = code. Em cần implement state machine hoặc một cách nào đó để lưu được state hiện tại của hệ thống, dựa trên đó em có rollback phù hợp. Nhưng anh thì không khuyến khích cách này.

0
Avatar
đã bình luận câu trả lời trong câu hỏi
Jul 7th, 2022 7:42 a.m.

@pham.van.toan vậy à. dù sao cũng cảm ơn bạn

0
Jul 7th, 2022 4:29 a.m.

@thinh24 Hướng dẫn thì bạn search trên mạng nhiều mà. Nhưng khuyến khích bạn nếu không chuyên thì nên nhờ đội làm Chatbot họ tích hợp luôn cho. Vì cũng cần phải chỉnh sửa cấu hình lúc deploy lại server Chatbot nữa.

0
Jul 7th, 2022 4:24 a.m.

bài viết rất hay và dễ hiểu ạ, tks chủ thớt

0
Avatar
đã bình luận cho bài viết
Jul 7th, 2022 4:04 a.m.

Thank you

0
Avatar
đã bình luận câu trả lời trong câu hỏi
Jul 7th, 2022 3:49 a.m.

@pham.van.toan mình muốn cài lên website, facebook, telegram. mà mình ko phải là dân chuyên nghiệp nên có hướng dẫn nào cài đặt lên website, facebook, telegram dễ dàng, đơn giản, dễ hiểu ko nhỉ?

0
Jul 7th, 2022 3:12 a.m.

Bài viết rất hay! Thank b

+1
Jul 7th, 2022 2:59 a.m.

Hello anh , cảm ơn anh về những chia sẻ rất hay về SAGA nhưng em muốn hỏi anh chút về Outbox ạ mong anh rep , hí hí

  • Trong bài toán của anh nếu là đến đoạn payment xử lý cắt tiền xong gửi msg cho order thì bị lỗi thì bên order ko nhận dc msg nên ko update dc status nên mình đã xử dụng outbox , chỗ này theo em chia làm 2 trường hợp
  • TH1 : hàm của anh có đánh transactional thì mà giả xử trong hàm đó xảy ra bất kì 1 lỗi throws exception nào thì nó không update status của payment dc và cũng ko lưu data xuống outbox để publish msg dc ạ -> cũng mất msg ( expect của mình ở đây là phải trả về msg FAILED )
  • TH2: hàm của anh không đánh transactional thì oke vấn đề ở TH1 dc giải quyết = cách try catch nó , nhưng vấn đề khi ko đánh transactional xảy ra đó là nó ko rollback data dc tại service payment . Nhưng thế thì cũng có cách tự rollback thủ công nhưng vấn đề em băn khoăn ở đây là nó đã save data xuống những bảng nào để mình có thể rollback ạ , ví dụ em có đoạn code sau trong 1 function ạ dòng 1 : xảy ra exception dòng 2 : save data vào database table payment entity ở đây mình có thể trycatch để gửi lại msg FAILED cho order nhưng mình cũng phải biết nó đã save ở đâu mà còn rollback anh ạ nếu bên payment service vẫn lắng nghe msg FAIL từ order service gửi lại để rollback thì em nghĩ có vẻ sẽ xảy ra lỗi khi mà thực sự data chưa dc save vào table payment mà mình vẫn cứ update thì ko hợp lý lắm Vấn đề của em cũng hơi dài rồi , cảm ơn anh và mong anh rep ạ 😄
0
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí