2015-05-27 19 views
6

Tôi có thể sử dụng Java MQ Api để đặt và nhận tin nhắn không. Tôi cũng có thể vô hiệu hóa được và đưa vào hàng đợi.Có bí danh hỗ trợ MQ api sửa đổi

Trong một dự án di chuyển, chúng tôi sẽ có một Ứng dụng chạy song song. Cũ và mới. Cũ và Mới sẽ có hàng đợi riêng biệt của họ. Tôi điều tiết có thông điệp từ một khách hàng đi đến Old. Thỉnh thoảng, muốn các thông điệp chuyển sang Mới thay thế.

tự hỏi nếu MQ hỗ trợ khái niệm cổng/chuyển đổi. nơi thông qua API tôi có thể chỉ một hàng đợi để đi đến New, hoặc chỉ để Old, trong một thời gian ngắn.

Cố gắng tránh chuyển sang định tuyến dựa trên tin nhắn qua WMB vì ​​tôi không phải làm điều đó ngay hôm nay. Chế độ song song chỉ trong vài tháng.

Trả lời

3

Bạn không đề cập đến phiên bản của MQ hoặc liệu có sự liên quan đến tin nhắn hay sự phụ thuộc vào việc bảo quản MQMD.MsgID hay không. Đây là những yếu tố quan trọng trong việc đưa ra một giải pháp cho vấn đề này. Tôi sẽ cố gắng mô tả đủ các tùy chọn để ít nhất một lựa chọn có thể tồn tại cho dù bạn đang sử dụng phiên bản nào.

Pub/Sub
Điều dễ nhất cần làm là gửi tin nhắn đến bí danh trên một chủ đề. Bất kỳ thư nào đến được xuất bản ngay lập tức về chủ đề đó. Sau đó, nó là một vấn đề đơn giản để tạo ra các đăng ký quản trị để gửi tin nhắn đến các hàng đợi mà các ứng dụng cần các tin nhắn đang lắng nghe. Đây hoàn toàn là một thay đổi cấu hình và không yêu cầu các thành phần, quy trình hoặc mã bên ngoài. Nó có sẵn từ v7.1 của MQ và cao hơn, đó là để nói bất kỳ phiên bản hiện tại được hỗ trợ của MQ.

Mặt giảm là IBM MQ sẽ thay đổi MQMD.MsgID từ thời điểm nhận được tin nhắn về chủ đề đến thời điểm được xuất bản trên hàng đợi nhập của ứng dụng. Điều này sẽ phá vỡ khả năng của ứng dụng sử dụng MQMD.MsgID của thư đến làm ID tương quan khi trả lời. Nếu ứng dụng yêu cầu tải trước ID tương quan hoặc không dựa vào ID tương quan thì đây không phải là vấn đề.

Bí danh
Nhưng đối với những ứng dụng mà đây là vấn đề, nó khó hơn một chút. Bạn có thể bí danh trên một hàng đợi và có thư gửi đến trên bí danh. Khi bạn cần chuyển từ hàng đợi này sang hàng đợi khác, bạn thay đổi bí danh. Có một vài vấn đề với điều này. Đầu tiên là không bao giờ có thể gửi luồng tin nhắn đến nhiều hơn một trong các ứng dụng. Trong một thử nghiệm xử lý song song, nó thường được mong muốn để làm chính xác điều đó và sau đó so sánh các báo cáo tóm tắt hoặc chi tiết.

Vấn đề thứ hai là hoạt động nhiều hơn trong tự nhiên. Không thể thay đổi bí danh khi nó đang mở. Nếu các thư đến qua kênh RCVR, RQSTR hoặc `CLUSRCVR, thì không sao cả. Dừng channe, chuyển đổi bí danh và khởi động lại kênh. Trong một loạt các lệnh kịch bản MQSC, điều này có thể được thực hiện nhanh hơn nó có thể được gõ. Tuy nhiên, nếu các ứng dụng đưa tin nhắn được kết nối trong chế độ liên kết hoặc thông qua ứng dụng khách trực tiếp đến bí danh, tất cả chúng phải được dừng lại để thay đổi bí danh.

Điều đó nói rằng, răng cưa hoạt động trên tất cả các phiên bản của MQ ra khỏi hộp.

bản sao vật lý
Một giải pháp mà được khoảng một thời gian khá là sử dụng chương trình Q (SupportPac MA01) chỉ đạo các thông điệp. Trong trường hợp này, hàng đợi trên đó các thông điệp là một hàng đợi cục bộ.Chương trình Q được kích hoạt hoặc được đặt để liên tục nghe trên hàng đợi. Khi một tin nhắn đến, Q rồi sao chép nó vào một hoặc cả hai hàng đợi đích.

Switching hành vi nếu Q được kích hoạt liên quan đến việc xác định trước 2 hoặc 3 quá trình trong đó mỗi định nghĩa một hành vi khác nhau - di chuyển các tin nhắn mới đến QUEUEA, để QUEUEB hoặc cả hai. Thay đổi thuộc tính PROCESS của hàng đợi để trỏ đến một quá trình khác sẽ dẫn đến thay đổi hành vi tức thì. Ngoài ra, nếu Q được định cấu hình để nghe trên hàng đợi mãi thì thay đổi hành vi liên quan đến việc sử dụng ba tập lệnh khác nhau để thực thi nó trong đó một thư sẽ được sao chép sang QUEUEA, một khác cho QUEUEB và một khác cho cả hai hàng đợi. Thay đổi hành vi liên quan đến việc giết chết tập lệnh và bắt đầu một tập lệnh khác.

Chương trình Q hoạt động với tất cả các phiên bản của MQ, bất kể nó được kích hoạt hay theo kịch bản.

Nhược điểm của phương pháp này bao gồm các bộ phận chuyển động rõ ràng hơn. Bạn phải kích hoạt hàng đợi hoặc làm cho một chương trình giao dịch hoạt động như một daemon. Không khó nhưng nếu bạn đang đặt cược doanh nghiệp vào nó thì có lẽ một số giám sát là để đảm bảo hàng đợi đầu vào không bắt đầu xây dựng.

Khuyến nghị
Trong tất cả các phương pháp này, tôi thực sự như Pub/phiên bản Sub. Nó là cực kỳ đáng tin cậy, có các bộ phận chuyển động ít nhất, và nếu bất cứ điều gì phá vỡ nó dưới sự hỗ trợ của IBM. Khi bạn cần phải thay đổi một cái gì đó, bạn có thể làm điều đó với tác động tối thiểu đến các ứng dụng đang chạy. Nếu có thể, hãy sử dụng nó.

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