2011-06-25 26 views
7

Tôi có một chương trình đơn giản để xử lý tin nhắn từ hàng đợi. Ý định của tôi là xử lý tất cả các thư có sẵn trong hàng đợi và vẫn nghe hàng đợi cho thư đến.Cách tránh MQRC2033 NO_MSG_AVAILABLE

Tôi đã viết phần xử lý bên trong vòng lặp vô hạn vì tôi muốn nó luôn xếp hàng luôn và xử lý thư.

Khi sau khi xử lý tất cả tin nhắn một lần nữa nó sẽ cố gắng để có được một tin nhắn (vì nó là bên trong một vòng lặp vô hạn) từ hàng đợi và có

là có tin nhắn nó ném MQRC 2033 NO_MSG_AVAILABLE ngoại lệ (Infact nó là đúng) và chương trình của tôi thoát.

Ai đó có thể đưa ra ý tưởng liên tục nghe hàng đợi này và tránh ngoại lệ này.

Trả lời

5

Khi bạn thực hiện cuộc gọi API MQGET, có tùy chọn để chương trình chờ tin nhắn. Bạn có thể chỉ định thời gian chờ (tính bằng mili giây) hoặc chỉ định đợi mãi. Chỉ cần đảm bảo rằng nếu bạn có ứng dụng chờ hơn một vài giây, hãy chỉ định 'Thất bại nếu Quiescing'. Điều này cho phép người quản lý hàng đợi được dừng sạch. Nếu không có 'Thất bại nếu Quiescing', quản trị viên sẽ cần phải phát hành một chế độ tắt ưu tiên có thể gây ra sự cố.

Có một phần dành riêng cho câu hỏi này trong Hướng dẫn của lập trình viên trong chương Waiting for Messages. Tùy thuộc vào ngôn ngữ bạn đang viết, giá trị thực tế cần chỉ định là trong Programmer's Reference, hướng dẫn sử dụng Using Java hoặc hướng dẫn sử dụng Using .Net. Mỗi mục trong số này sẽ hiển thị trong bảng điều hướng khi bạn nhấp vào liên kết ở trên.

+0

Cảm ơn Rob .. Tôi đã chỉ định MQWI_UNLIMITED trong tùy chọn nhận của tôi .. Nó hoạt động như mong đợi.Cảm ơn bạn rất nhiều. – Vignesh