2011-11-22 33 views
10

Cách tốt nhất để sử dụng MSMQManagement từ C# là gì? Tôi cần khả năng nhìn trộm và thanh lọc hàng đợi gửi đi cục bộ khi máy bị ngắt kết nối từ xa. Rõ ràng một số người dùng có thể thực hiện điều này thông qua API COM, nhưng trong tab Tham chiếu COM, tôi không có Thư viện đối tượng Microsoft Message Queue 3.0 mà các trang web/blog/bài đăng khác đề cập đến (cũng không tương tự như từ xa) . Tôi đã tìm kiếm máy cho Interop.MSMQ.dll và không thể tìm thấy nó.API MSMQ COM trong C#

Chúng tôi đang sử dụng VS 2008 và chạy trên Windows 7 64 bit.

Tôi đang thiếu gì? Có cơ chế nào khác để thực hiện điều này thông qua các lớp được quản lý "bình thường" không?

Cảm ơn

+0

Nếu bạn chưa cài đặt MSMQ trong máy tính Windows 7, hãy vào Pa-nen điều khiển -> Chương trình và tính năng và thêm tính năng MS MQ ... –

+0

MSMQ được cài đặt, như là DCOM Proxy. Tôi có thể sử dụng các tính năng "bình thường" của MSMQ mà không gặp vấn đề gì thông qua lớp System.Messaging. Những gì tôi không thể làm là thanh lọc hoặc nhìn trộm các tin nhắn trong một hàng đợi gửi đi cục bộ khi máy ở đầu kia của hàng đợi bị ngắt kết nối khỏi mạng. Một trong các thao tác này sẽ ném MessageQueueException khi các máy không được kết nối. – Dan1701

+0

Có rất nhiều ví dụ trên web của các nhà phát triển khác sử dụng API COM để truy cập vào lớp MSMQManagement, thông qua mã được quản lý, được _not_ chứa trong System.Messaging. Những ví dụ này chứng tỏ việc thêm một tham chiếu đến "Thư viện đối tượng thư của Microsoft Message Queue 3.0" thông qua tab tham chiếu COM. Tôi không có lựa chọn này. Tôi đang tìm một cách để có được DLL này, hoặc ít nhất là tìm ra rằng nó sẽ không hoạt động trên Windows 7/Server 2008. – Dan1701

Trả lời

3

bạn có thể sử dụng nó natively từ NET bằng cách sử dụng: System.Messaging.MessageQueue

kiểm tra những bài viết này:

Accessing Message Queues

Reliable Messaging with MSMQ and .NET

+1

System.Messaging khác với thư viện API COM. System.Messaging không cho phép truy cập vào hàng đợi gửi đi cục bộ (trừ khi nó nằm trên cùng một máy với đầu kia). Lớp MSMQManagement cung cấp một số cơ chế để làm điều này, nhưng tôi không thể tìm ra cách truy cập nó thông qua mã được quản lý. – Dan1701

14

Project + Add Reference, Duyệt tab . Điều hướng đến c: \ windows \ system32 (hoặc syswow64 trên hệ điều hành 64 bit) và chọn mqoa30.tlb. Điều này tạo ra Interop.MSMQ.dll interop lắp ráp bạn đang tìm kiếm. Hãy coi chừng MSMQ là một thành phần Windows tùy chọn, trước tiên bạn sẽ cần phải cài đặt nó nếu tập tin không có trên máy của bạn.

+0

Điều này dường như không hoạt động (ít nhất là không có trong Visual Studio 2010). Tôi nhận được lỗi này: "Không thể tải tập tin hoặc lắp ráp 'mqoa30.tlb' hoặc một trong những phụ thuộc của nó. Các mô-đun dự kiến ​​sẽ chứa một bản kê khai lắp ráp. Tập tin này có thể không phải là một hội đồng quản lý." – Vaccano

+1

Tôi đã xác nhận rằng điều này làm việc trong Visual Studio 2008 và không phải trong Visual Studio 2010. Tôi đã hỏi một câu hỏi về nó ở đây: http://stackoverflow.com/questions/9593538/how-to-add-a-reference-to -the-iterop-msmq-stuff – Vaccano

+1

Làm việc tốt khi tôi thử nó trong VS2010. Bạn không sử dụng tab Duyệt, tôi không nhận ra ảnh chụp màn hình. –