2012-01-27 26 views
5

Đây có thể là một câu hỏi đơn giản, nhưng tôi chưa thấy câu trả lời trực tiếp. Nói rằng tôi đang sử dụng một vai trò công nhân Azure để thực hiện một số nhiệm vụ chạy dài, nói một nhiệm vụ mất một giờ. Bây giờ nói MS quyết định rằng vai trò công nhân cần một số bảo trì được thực hiện trên nó và cố gắng để đóng nó xuống 30 phút vào công việc.Ngăn Azure làm việc trong khi đang xử lý

Có cách nào để Azure chờ cho đến khi vai trò đó kết thúc chạy để bảo trì không? Tôi thấy phương pháp OnStop, nhưng có vẻ như bạn chỉ có thể làm mọi thứ trì hoãn trong một khoảng thời gian nhất định trước khi bạn tắt máy.

Nếu điều này là không thể, làm thế nào để bạn có kế hoạch này cho các hoạt động mất một khoảng thời gian khá và không thể được chia thành các phần nhỏ hơn? Bạn có muốn khôi phục mọi thay đổi được thực hiện trước đó và sau đó thử lại tác vụ không?

Trả lời

4

Bạn có thể xử lý sự kiện Stopping để trì hoãn việc tắt máy (trong chế độ tắt máy duyên dáng). Trong trường hợp gặp sự cố, bạn thực sự không thể ngăn tắt máy ...

Đây là đề xuất giảm nhẹ. Giả sử nhiệm vụ của bạn là định hướng hàng đợi. Hãy giả vờ thông điệp của bạn trông giống như PROCESSWIDGET|123.

Bạn đọc thông điệp xếp hàng trong phiên bản công nhân và bắt đầu xử lý. Bạn thực sự có thể sửa đổi thông báo hàng đợi trên đường đi và ghi lại tiến trình của bạn. Vì vậy, trong ví dụ hư cấu này, giả sử có 4 bước để hoàn thành tác vụ kéo dài một giờ, mỗi tác vụ mất 15 phút. Khi mỗi bước hoàn tất, bạn có thể cập nhật tin nhắn của mình, bổ sung trạng thái trạm kiểm soát. Ngay sau khi hoàn thành nhiệm vụ đầu tiên, bạn cập nhật tin nhắn, và bây giờ nó trông giống như PROCESSWIDGET|123|STEP2.

Bây giờ ... đã xảy ra sự cố và phiên bản VM bị chết vì một lý do nào đó. Thông báo hàng đợi cuối cùng sẽ hiển thị trở lại, một cá thể công nhân khác đọc nó và thấy thông báo được nối thêm với bước tiếp theo để thực hiện. Giả sử bạn đã lưu trữ các tệp trung gian trong bộ nhớ Blob (hoặc một số lưu trữ liên tục khác), bạn có thể tiếp tục từ nơi bạn đã dừng lại và không xử lý lại từ đầu.

Xem this MSDN page để biết chi tiết về phương pháp UpdateMessage().

+0

Ngoài ra, chỉ FYI - bạn chỉ có thể trì hoãn Shutdown trong 5 phút. Sau đó, nó sẽ tắt máy. Như David nói, đó cũng chỉ là lối thoát duyên dáng. – dunnry

+0

Vâng tôi không lo lắng quá nhiều về tai nạn. Nó chỉ là bảo trì thường xuyên. Một trong những công việc này sẽ phải nhập một tệp văn bản ghi 10 triệu mỗi đêm. Tôi thực sự không muốn Microsoft tắt trường hợp của tôi để nâng cấp trong quá trình đó bởi vì nó sẽ mất một thời gian. Tôi đoán tôi có thể theo dõi số dòng và chỉ bắt đầu lại vào thời điểm đó. –

+1

Nếu có thể ngắt nhập khẩu đó thành các lô có thể chạy song song? – BrentDaCodeMonkey

Các vấn đề liên quan