2009-09-09 40 views
7

Tôi có dịch vụ WCF với netMsmqBinding. Khách hàng của tôi có thể gửi tin nhắn đến hàng đợi của tôi và khi dịch vụ đang chạy, nó sẽ truy xuất thư từ hàng đợi như mong đợi. Nếu dịch vụ không chạy, các tin nhắn nhận được sẽ được xếp hàng đợi cho đến khi dịch vụ bắt đầu.WCF MSMQ ràng buộc với một dịch vụ IIS - làm thế nào để nhanh chóng dịch vụ?

Vấn đề của tôi là dịch vụ không bắt đầu khi tin nhắn chạm vào hàng đợi. Dịch vụ được lưu trữ trong IIS, và do đó nó không được khởi tạo cho đến khi IIS nhận được yêu cầu. Nếu tôi duyệt đến dịch vụ thì nó xử lý các thông điệp trong hàng đợi, nhưng rõ ràng đây không phải là phương pháp xử lý hàng đợi mong muốn của tôi!

Tôi hy vọng rằng tôi cần phải thay đổi việc triển khai dịch vụ, hoặc thay đổi thiết lập IIS, nhưng tôi không biết nơi nào hoặc những gì cần thay đổi.

CẬP NHẬT

Có ai thực sự sử dụng MSMQ trên WCF? Tôi đã làm việc này trong một thời gian ngắn - tôi đã bật tính năng ràng buộc trên trang web khác nhau trên cùng một máy chủ, thật kỳ lạ - nhưng giờ nó đã ngừng hoạt động trở lại.

Vấn đề duy nhất tôi gặp phải là kích hoạt dịch vụ khi có thông báo trong hàng đợi. Hiện tại, hàng đợi chỉ xử lý khi dịch vụ được khởi tạo, ví dụ: khi tôi duyệt tệp .svc. Tôi đã bật giao thức net.msmq trên ứng dụng và tôi đã bật tính năng ràng buộc net.msmq trên trang web ... có bất kỳ điều gì khác mà tôi cần thực hiện không?

Trả lời

5

Bạn cần cấu hình IIS để kích hoạt không HTTP. Tôi không biết tất cả các chi tiết của đỉnh đầu của tôi nhưng về cơ bản bạn cần phải sử dụng appcmd để cấu hình và kích hoạt kích hoạt ràng buộc net.msmq.

Kiểm tra this blogpost hoặc this screencast sẽ cung cấp cho bạn tất cả chi tiết.

2

Tôi tin rằng vấn đề của tôi sử dụng MSMQ ràng buộc trên WCF là chủ yếu xung quanh IIS.

tôi đã không có kết thúc của các vấn đề sử dụng Windows XP/Server 2003 với IIS 6.

Sử dụng Windows 7 hoặc Server 2008 với IIS 7.5 tất cả mọi thứ hoạt động tốt.

Một gợi ý tốt hơn nữa là chạy MSMQ dưới dạng dịch vụ được quản lý/Dịch vụ Windows hoặc một ứng dụng độc lập thay vì trong IIS.

0

Một tùy chọn là lưu trữ dịch vụ này dưới dạng dịch vụ Windows. Vì IIS không tự động kích hoạt WS khi một thông điệp được đặt trên hàng đợi.
Một tùy chọn khác là tạo một dịch vụ cửa sổ đơn giản ping dịch vụ này sau khoảng thời gian được chỉ định. Chúng tôi đã phơi bày một hợp đồng khác trên cùng một dịch vụ, mà không có IsOneWay = true (vì thao tác này sẽ không tương tác với hàng đợi). Sau đó, tạo ra một dịch vụ cửa sổ mà ping URL dịch vụ WCF sau một khoảng thời gian xác định, đảm bảo quá trình WS luôn hoạt động và WCF chọn lên các tin nhắn ngay sau khi có một thông báo trên hàng đợi.

Ngoài ra, đảm bảo dịch vụ cũng được lưu trữ trên http & net.msmq cả hai.

Tôi đã xem qua một bài viết hay cho hướng dẫn từng bước để triển khai WCF với MSMQ bằng Net.Liên kết Msmq:
Setup MSMQ with WCF using Net.Msmq binding

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