2010-10-28 36 views
15

Mặc dù câu hỏi của tôi trông giống như một số đã được tìm thấy trên SO, những bài không giúp tôi, vì vậy ở đây là:Tin nhắn MSMQ đang mắc kẹt trong Queue Outgoing

Given:

  • Hai máy trên cùng phân khúc (một cách tự nhiên trong cùng lĩnh vực, thực sự trên bàn cùng)
  • Cả hai máy là Windows 7 máy trạm
  • Cả hai máy có tường lửa tàn tật
  • Cả hai máy gặp nhau oth er (ping works)
  • Có một hàng đợi tin nhắn không giao dịch riêng kiểm tra trên một trong số chúng.
  • Máy gửi có HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSMQ\SimpleClient\@BinaryEnabled = 'Yes'
  • Chủ sở hữu hàng đợi gửi một thông điệp từ máy khác
  • Thông điệp được bị mắc kẹt trên hàng đợi đi, không bao giờ đạt được mục tiêu.
  • Khi được gửi từ cùng một máy (tức là tại địa phương), thư đến OK.

Thông điệp được gửi bằng cách sử dụng đoạn mã sau:

var q = new MessageQueue(@"FormatName:Direct=OS:il-mark-lap\private$\test"); 
q.Send(string.Format("Test message sent at {0} from {1}", DateTime.Now, Environment.MachineName)); 

đâu il-mark-đùi là địa chỉ của máy với hàng đợi.

Tôi phải làm gì để làm cho mọi thứ hoạt động?

Cảm ơn rất nhiều.

+0

Tôi đang phải đối mặt với cùng một vấn đề. Mark, bạn đã bao giờ có được đáy của điều này chưa? – user923849

+0

Tôi không nhớ lại bây giờ. Dù sao msmq có vấn đề gazillion vì vậy chúng tôi đã chỉ bỏ nó. Lời khuyên của tôi - tránh xa nó. – mark

+0

Tôi đã thêm tiền thưởng vì chúng tôi có cùng một vấn đề. Các tin nhắn chỉ nằm trong hàng đợi gửi đi, ngay cả khi sử dụng DIRECT = TCP. – 79E09796

Trả lời

1

Hàng đợi riêng tư thường trong mạng LAN có thể gửi tin nhắn cho nhau. Nhưng đôi khi hàng đợi riêng tư có thể không thể truy cập được và khiến người khác tạo hàng đợi đi ... Không biết tại sao.

+1

hàng đợi đi luôn được tạo. – BlackICE

8

Tôi nghĩ rằng tôi đã tìm thấy câu trả lời cho vấn đề này, tôi đã có những gì dường như là cùng một vấn đề, tôi chỉ bị mắc kẹt sau khi không gửi tin nhắn cho khách hàng trong 10 phút mặc dù. Hãy xem bài viết KB này, nó có thể giúp bạn. Ngoài ra, trong trường hợp của tôi nó không có gì để làm với khởi động lại, do đó, không cho phép bạn ném ra, tôi đã triển lãm các triệu chứng trong netstat và tin nhắn ban đầu sẽ đi qua khi khách hàng lần đầu tiên được bắt đầu lên.

http://support.microsoft.com/kb/2554746

+0

Chúng tôi từ lâu đã quyết định từ bỏ MSMQ. Nhưng dù gì cũng cảm ơn. – mark

5

Tôi chỉ giải quyết được vấn đề, đây là các bước mà tôi mất để giải quyết nó:

Lấy tiện ích DTCPing từ Microsoft, chạy nó trên các máy sử dụng MSMQ, các DTC phải có khả năng nói chuyện với nhau để MSMQ hoạt động.

Troubleshooting MSDTC issues with the DTCPing tool

này đến lượt nó khiến tôi nhận ra rằng MSMQ là phụ thuộc nhiều vào tên NetBIOS - máy phải có khả năng ping nhau bằng cách sử dụng tên NetBIOS một mình.

Khi thực hiện xong, hãy đảm bảo rằng bạn khởi động lại tất cả dịch vụ xếp hàng thư (cả trên máy gửi và máy đích khi cần để thực hiện thao tác NetBIOS ngược).

Trong trường hợp của tôi, một khi tôi nhận được DTC đi với độ phân giải tên NetBIOS - khởi động lại dịch vụ - mọi thứ bắt đầu hoạt động một cách kỳ diệu.

Tôi đặc biệt khuyên bạn nên truy cập this page để biết thêm tài nguyên.

+1

Chúng tôi từ lâu đã từ bỏ MSMQ (tốt), .NET (so-so) và C# (tiếng thở dài!) Ủng hộ Java (:-(). Nhưng cảm ơn, dù sao đi chăng nữa, – mark

+0

Đối với tôi đó là đảm bảo cả hai máy đều có thể ping với nhau bằng cách sử dụng tên NetBIOS THX – xhafan

1

Câu trả lời là thoát dễ dàng. Đảm bảo bạn có thể telnet cổng 1801,135,2103 & 2105 từ cả hai máy nguồn đến đích và ngược lại. Đồng thời đảm bảo MSMQ đang chạy trên cả hai máy.

6

Tôi gặp sự cố này ngay hôm nay. Để giải quyết nó, chúng tôi phải mở hộp thoại Thuộc tính thư xếp hàng của máy chủ nhận và trên tab Bảo mật máy chủ, hãy bỏ chọn hộp "Tắt các cuộc gọi RPC chưa được xác thực". Ngoài ra, trên hàng đợi riêng Thuộc tính | Tab bảo mật chúng tôi đã thay đổi bảo mật để cấp cho mọi người toàn quyền kiểm soát. Trong trường hợp của tôi, các máy nằm trên cùng một phân đoạn, nhưng không nằm trên cùng một miền. Hàng đợi không giao dịch. Chúng tôi đang sử dụng địa chỉ IP cho các ràng buộc điểm cuối (WCF), NetBIOS/DNS không hoạt động.

+0

Cảm ơn bạn Sau khi dành hàng giờ cố gắng giải quyết một vấn đề tương tự (MSMQ của tôi là công khai và giao dịch tuy nhiên) không có gì khác đã giúp. "Vô hiệu hóa các cuộc gọi RPC chưa được xác thực" là sửa lỗi – geedubb

+0

Chúng tôi đã thấy cùng một vấn đề "Vô hiệu hóa các cuộc gọi RPC chưa được thẩm định" đã được kiểm tra. Bỏ chọn tùy chọn này đã bỏ qua vấn đề. Chúng tôi nghi ngờ nguyên nhân gốc rễ là một số thay đổi cấp độ mạng, nhưng thay đổi này khiến chúng tôi hoạt động ngay lập tức. –

3

Tôi gặp sự cố khi chúng tôi có 2 máy chủ gửi tin nhắn đến một phần ba. Chỉ nhận được một tin nhắn của máy chủ. Các tin nhắn từ một người khác đã bị mắc kẹt trong hàng đợi gửi đi là 'không được nhận'.

Vấn đề là do tất cả các máy tính được nhân bản VM và có cùng một QMId trong khóa đăng ký: HKLM \ Software \ Microsoft \ MSMQ \ Parameters \ Machine Cache. Chúng tôi đã cài đặt lại MSMQ trên các máy chủ đã khắc phục sự cố.

Tài liệu tham khảo:

http://baleinoid.com/whaly/2012/08/random-bug-msmq-unacknowledged-messages/ http://blogs.msdn.com/b/johnbreakwell/archive/2007/02/06/msmq-prefers-to-be-unique.aspx

+0

Điều này đã giúp tôi, thanx! – Martin

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