2011-09-20 20 views
5

Bối cảnh:BizTalk Zombies - cách nào để loại bỏ một cách rõ ràng một thuê bao từ bên trong một dàn nhạc BizTalk

Chúng tôi tận dụng rất nhiều tập, singleton và orchestrations multiton, tương tự như Seroter's Round Robin kỹ thuật mô tả ở đây (BizTalk 2009) .

Tất cả các loại dàn nhạc này đều có các điểm thoát hoặc điểm tiếp tục tương đối tùy ý, thường được xác định bởi bộ đếm thời gian - nghĩa là nếu dàn nhạc chưa nhận được thêm tin nhắn nào trong vòng X phút. sau khi Y phút nữa trôi qua và không còn tin nhắn nữa thì bỏ đi. (Chúng tôi cũng thoát khỏi Single/N-Tons của chúng tôi do lo ngại về degraded performance after large numbers of messages được đăng ký với singleton trong một khoảng thời gian).

Nhiều như chúng tôi đã cố gắng giảm nhẹ so với Zombies, ví dụ: bằng cách bắt đầu bất kỳ quá trình xử lý tiếp tục nào trong một dàn nhạc được sắp xếp lại asynch, luôn luôn có một điểm yếu mà một thông báo thời gian 'tốt' có thể gây ra một zombie. (tức là nhận được nhiều tin nhắn đến hơn tương quan với hình dạng 'đã hoàn thành' của một dàn nhạc),

Nếu một thông báo gây ra một zombie trên một trong các đăng ký, thông báo dường như không được gửi tới người đăng ký OTHER (ví dụ: orchs) hoàn toàn tách rời khỏi dàn nhạc 'zombie gây ra'), tức là thông báo gây ra zombie không được xử lý.

Câu hỏi

Vì vậy, tôi sẽ rất quan tâm đến việc nhìn thấy nếu có ai có cách khác, lập trình hay cách khác, để loại bỏ một cách rõ ràng một thuê bao tương quan từ một dàn nhạc chạy khi dàn nhạc đã 'tiến' vượt quá điểm mà nó quan tâm đến thông điệp tương quan này. (thông báo mới này thường sẽ bắt đầu một dàn nhạc mới với các tương quan của nó vv)

Tại thời điểm này, chúng tôi sẽ xem xét ngay cả một giải pháp hack như một cuộc gọi API BizTalk được phản ánh hoặc xóa SQL trực tiếp đối với MsgBoxDB.

+0

Vì sự hoàn hảo đó. vấn đề là với năm 2006, bạn có cần phải tắt các dàn nhạc? Tôi đã sử dụng mẫu đó với số lượng lớn thư có thành công trong bt2009. Dàn nhạc chạy liên tục. Để đóng chúng một cách an toàn, tôi đã dừng nguồn, sau đó là dàn nhạc. –

+0

Thật không may, hầu hết lưu lượng truy cập đến của chúng tôi đến từ một hàng đợi MQ đơn lẻ, vì vậy việc dừng cổng nhận sẽ ảnh hưởng đến tất cả các ứng dụng của chúng tôi. Nhưng bạn là đúng - đó là một trường hợp của 'mối quan tâm' về rò rỉ hơn bằng chứng bona fide (ví dụ như nhìn thấy 50k + tin nhắn gắn liền với singleton là khó khăn). Theo tải đặc biệt, việc đình chỉ một vài cây đơn đơn hoạt động tốt và sau đó tiếp tục khi máy chủ khôi phục/hoàn thành với công việc khẩn cấp hơn (do 'thiết kế' chỉ các thông điệp quan trọng không trễ sẽ được gán cho Singletons/Round-Robins). – StuartLC

+0

Có thể thêm hàng đợi khác vào giữa hàng đợi hiện tại và người nhận hiện tại không? Bằng cách đó bạn có thể ngăn chặn người nhận mới và tắt dàn nhạc một cách duyên dáng. –

Trả lời

1

Không, bạn không thể xóa đăng ký một cách rõ ràng trong Dàn nhạc.

Đăng ký sẽ bị xóa khi Dàn nhạc tự xé xuống, nhưng thông báo đến trường hợp chính xác đó sẽ được chuyển đến Dàn nhạc nhưng Dàn nhạc sẽ kết thúc mà không xử lý và đó là Zombie của bạn.

Microsoft Điều về Zombies http://msdn.microsoft.com/en-us/library/bb203853.aspx

Có lần tôi cũng phải có một nhận, debatch, tổng hợp, gửi mẫu. Nhận tin nhắn bao bọc từ nhiều người gửi, gỡ lỗi chúng, tổng hợp bởi người nhận dự định (dựa trên hai quy tắc, số lượng tin nhắn hoặc thời gian trễ, tùy điều kiện nào xảy ra trước). Kịch bản này đã chín muồi cho Zombies và khi tôi đọc về chúng tôi đã thiết kế nó để nó sẽ không xảy ra. Điều này là dành cho BizTalk 2004 Tôi đã gỡ lỗi các thư và chèn chúng vào cơ sở dữ liệu. Tôi đã có một thủ tục lưu trữ đã được thăm dò bởi một cổng nhận sẽ làm việc ra nếu có một lô để gửi vào nếu có nó sẽ kích hoạt của một Orcherstration mà có thể lấy thông điệp đó và định tuyến động. Vì không phải Dàn nhạc nào phải đợi một thông điệp khác, họ có thể kết thúc một cách duyên dáng và sẽ không có Zombies.

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