İnternet bağlantılı, dağıtılmış C # istemcileri için mesaj kuyruğu çözümü

C # için bir mesaj kuyruklama çözümünü araştırmanın ilk aşamasındayım ve herhangi bir deneyim, öğrenilen dersler, savaş öyküleri vb. İçin minnettar olacağım. Ayrıca, MSMQ'nun konfigürasyonumuz için uygunluğu ile ilgili bir takım özel sorularım var.

Kısaca, dağıtılmış bir mimariye sahibiz: çeşitli sunucu tarafı olayları, dağıtılan müşterilerimiz tarafından alınan iş öğelerini oluşturur. Bu istemciler sunucuya bağlanır, işi alır ve işleyebilir, ardından işin yapılmasını beklemeye geri döner.

Bu müşterilerle ilgili birkaç ayrıntı:

  1. We have a few hundreds of client installations today, and need to be ready for growth to tens of thousands in the next 18 months.
  2. The clients never submit tasks to the server -- they are "pull only."
  3. Payloads to the clients are <= 1K each.
  4. We don't need heavy-weight authentication nor encryption of the traffic (though that's a fine bonus)
  5. Our clients run on a variety of MS operating systems, >= WinXP-SP1. Some are parts of windows active directories, or windows domains, or ad hoc workgroups.
  6. Mostly, the clients are idle. We want to efficiently "wait for work" then respond to the work as quickly as possible (i.e., we want clients to receive the work item ASAP after it's queued)
  7. Occasionally, our clients disappear from the internet for a time: their machines are shut off for a day, or overnight, etc. We want work items to arrive when they're back online. Put another way, we do need message reliability.
  8. We control all of the client and server code, but not the client environments (though our installers do install prerequisite software like .NET 3.5, if it's not there already)

Yani, yukarıda verilen - MSMQ bizim için "doğal olarak" çalışacak mı? MSMQ'nun, istemcileri etki alanı/etkin dizinde bulunmadığında ve Internet üzerinden bağlandıklarında iletileri dinlemelerini nasıl (veya if) edemediğine net bir yanıt bulamadım. Şimdiye kadar, MSMQ ile ilgili okumalarım güzel "kurumsal merkezli" hissediyor - kurumsal olmayan ihtiyacımız MSMQ ile ilgili bir sorun mu olacak?

Geçmişte benzer kurulumlarda başka hangi çözümleri kullandınız?

Ve elbette, başka hangi soruları sormalıyım? ;-)

Teşekkürler!

4

2 cevap

RabbitMQ sizin için çözüm gibi geliyor.

RabbitMQ

RabbitMQ .NET/WCF Kitaplığı

3
katma

İnternette merkezi bir sunucuya bakıyorsanız, uzak istemcilerin onları okumasını bekleyen iletileri beklerseniz, MSMQ sizin için bir ürün değildir (bunu söylemek beni acıtır). MSMQ, HTTP kullanarak iletileri Internet üzerinden çekemez. 135 numaralı bağlantı noktasını açmanız ve RPC protokolünü kullanmanız gerekecek ve bu mutlaka internette harika bir fikir değil.

Şerefe John Breakwell

2
katma