2011-01-26 23 views
6

Có cách nào để thanh lọc hàng đợi gửi đi không. Nó không xuất hiện mà tôi có thể làm điều đó với các MMC snap-in và khi tôi cố gắng thanh lọc nó trong mã tôi nhận được một lỗi Format name is invalid máy tính nó gửi các tin nhắn không tồn tại, vì vậy họ sẽ không bao giờ được gửi, tuy nhiên hàng đợi lấp đầy không gian lưu trữ tối đa cho MSMQ vì vậy mỗi khi ứng dụng của tôi cố gắng gửi một tin nhắn khác, tôi nhận được ngoại lệ insufficient resources.

Tôi đã thử các định dạng sau và tất cả họ đều thất bại với các ngoại lệ format name is invalid

TRỰC TIẾP = Hệ điều hành: MÁY TÍNH \ private $ \ queuename
OS: MÁY TÍNH \ private $ \ queuename
COMPUTER \ private $ \ queuenameLàm thế nào để làm sạch hàng đợi gửi đi MSMQ

+0

Hàng đợi gửi đi là gì? – Andrey

+3

Đó là hàng đợi gửi tin nhắn được lưu trước khi chúng được gửi đến một máy tính khác. – Brian

Trả lời

6

Bạn sẽ có thể thanh lọc thủ công từ trình cắm MMC. MSMQ trở nên rất keo kiệt khi nó đạt đến giới hạn lưu trữ của nó, vì vậy rất nhiều hoạt động sẽ thất bại với "sự cho phép bị từ chối" và những thứ tương tự.

Giải pháp dài hạn rõ ràng là sửa đổi cấu hình để có đủ dung lượng lưu trữ cho các mẫu sử dụng cụ thể của bạn.

Chỉnh sửa: Bạn có thể gặp phải hạn chế trong API được quản lý liên quan đến khả năng quản trị và hàng đợi từ xa. Hãy xem this bài viết của Ingo Rammer. Nó thậm chí còn bao gồm một ví dụ p-invoke.

using (var msgQueue = new MessageQueue(GetPrivateMqPath(queueName, remoteIP), QueueAccessMode.ReceiveAndAdmin)) 
{ 
    msgQueue.Purge(); 
} 

trong đó GetPrivateMqPath là::

if (!string.IsNullOrEmpty(remoteIP)) 
    return String.Format("FORMATNAME:DIRECT=TCP:{0}\\private$\\{1}", remoteIP, queueName); 
else 
    return @".\private$\" + queueName; 

điểm QueueAccessMode.ReceiveAndAdmin vào hàng đợi đi

+1

+1 Bài viết hay được liên kết. – Filburt

+3

Bài viết hay, không được dùng thử. Bởi vì một trong những hình ảnh trên màn hình cho tôi thấy những gì tôi đã làm sai lol. Tôi đã nhấp chuột phải vào tên hàng đợi và ngoại trừ tùy chọn thanh lọc để hiển thị ở đó. Đã phải đi sâu hơn và nhấp chuột phải vào "Hàng đợi thông điệp" – Brian

1

Bạn có thể thử FORMATNAME:DIRECT=OS:computer\PRIVATE$\queuename.

3

nó có thể sử dụng mã để tẩy một hàng đợi đi quản lý.

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