2010-05-13 34 views
5

Mon application écrite en C# utilise la classe MessageQueue dans .NET pour communiquer des messages avec une autre application distante et MessageQueue doit toujours être "connectée" (heartbeat present) avec le message distantQueue en toutes circonstances. Si ce n'est pas "connecté", alors il signale que quelque chose ne va pas et mon application devra effectuer certaines actions telles que la mise à jour d'un journal des événements.Comment détecter une rupture de connexion à l'aide de MessageQueue

Existe-t-il une méthode dans la classe MessageQueue qui peut être utilisée pour détecter de telles interruptions de connexion?

+0

Envoyez-vous des messages à une file d'attente locale ou distante? Aussi, est-ce public ou privé? – stuartd

+0

Les messages sont extraits d'une file d'attente privée locale. – Lopper

Répondre

3

La mise en file d'attente des messages est très conçue pour survivre aux déconnexions. Et prend en charge le routage à travers plusieurs machines. En tant que tel, il n'a aucun moyen de vérifier si une connexion en direct est présente. Vous ne devriez probablement pas considérer MSMQ si c'est une exigence, TCP serait un meilleur piège à souris.

Vous pouvez considérer asking for acknowledgment de votre message et le temps mort à ce sujet. C'est passif cependant. Un battement de cœur est possible, mais veillez à utiliser une file d'attente distincte non transactionnelle.