Giả sử bạn có một ứng dụng kết nối với 3 hệ thống bên ngoài khác nhau. Bạn cần phải cập nhật một cái gì đó trong tất cả 3. Trong trường hợp thất bại, bạn cần phải quay trở lại các hoạt động. Đây không phải là một điều khó khăn để thực hiện, nhưng nói rằng hoạt động 3 thất bại, và khi quay trở lại, rollback cho hoạt động 1 không thành công! Bây giờ hệ thống bên ngoài đầu tiên đang ở trạng thái không hợp lệ ...Hoạt động nguyên tử trên một số hệ thống bên ngoài không giao dịch
Tôi đang nghĩ giải pháp có thể là tắt ứng dụng và buộc khắc phục thủ công hệ thống bên ngoài, nhưng sau đó lại ... Có thể đã có sử dụng thông tin này (và có lẽ đó là lý do tại sao nó không thành công), hoặc chúng tôi có thể không có đủ quyền truy cập. Hoặc nó thậm chí có thể không phải là một cách hay để khôi phục lại hành động!
Có một số cách hay để xử lý các trường hợp như vậy không?
EDIT: Một số chi tiết ứng dụng ..
Đó là ứng dụng web đa người dùng. Hầu hết các công việc được thực hiện với các công việc theo lịch trình (thông qua Quartz.Net), vì vậy hầu hết các hoạt động được chạy trong chủ đề riêng của nó. Một số hành động của người dùng sẽ kích hoạt các công việc cập nhật một số hệ thống. Các hệ thống bên ngoài có phần không ổn định.
Tôi đã nghĩ đến việc thay đổi các ứng dụng để sử dụng Bộ chỉ huy và đơn vị của mô hình làm việc
Hệ thống bên ngoài có được cố định không? Hoặc bạn có thể sửa đổi chúng? – bmargulies