MSMQ - message queuing n'a pas été installé sur cet ordinateur
J'ai écrit un exemple d'application à écrire pour un public et privé, les files d'attente qui sont sur le serveur de dev. Je n'ai pas le message de la file d'attente installé sur ma machine locale.
J'obtiens l'erreur: message queuing n'a pas été installé sur cet ordinateur.
Erreur sur cette ligne:
MessageQueue.Exists(queueName)
Voici le test complet de code, commenté et non pas commenté privé et public, des files d'attente qui en résulte dans la même erreur. Ce que je fais mal?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Messaging;
namespace MsmqTest
{
public partial class Form1 : Form
{
//@"DIRECT=OS:devbox01\PRIVATE$\PrivateQueueDev";
//@"DIRECT=TCP:192.168.6.102\PRIVATE$\PrivateQueueDev";
private const string QueueName = @"DIRECT=TCP:192.168.6.102\PRIVATE$\PrivateQueueDev";
//@"DIRECT=OS:devbox01\PublicQueueDev";
//@"DIRECT=TCP:192.168.6.102\PublicQueueDev";
private const string QueueNamePublic = @"DIRECT=TCP:192.168.6.102\PublicQueueDev";
public Form1()
{
InitializeComponent();
}
private void Write_Click(object sender, EventArgs e)
{
MessageQueue msgQ;
string msgText = String.Format("Message: {0}", DateTime.Now);
try
{
msgQ = GetQ(QueueNamePublic);
msgQ.Send(msgText);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
private void Read_Click(object sender, EventArgs e)
{
}
private MessageQueue GetQ(string queueName)
{
MessageQueue msgQ;
if(!MessageQueue.Exists(queueName))
{
try
{
msgQ = MessageQueue.Create(queueName);
}
catch (Exception ex)
{
throw new Exception("Error creating queue", ex);
}
}
else
{
try
{
msgQ = new MessageQueue(queueName);
}
catch (Exception ex)
{
throw new Exception("Error getting queue", ex);
}
}
return msgQ;
}
}
}
OriginalL'auteur learning... | 2012-03-21
Vous devez vous connecter pour publier un commentaire.
Vous devez l'installation de MSMQ sur TOUTES les machines qui veulent participer à la transmission et la réception de messages. Que comprend l'envoi de machines telles que votre ordinateur local cette instance.
La raison pour cela est parce que de la stocker et transférer modèle de messagerie que MSMQ utilise.
http://en.wikipedia.org/wiki/Store_and_forward
Ce qui se passe réellement lorsque vous "envoyer" un message de votre serveur est:
Il n'y a pas d'alternative si vous souhaitez utiliser le service MSMQ. Je ne pense pas que l'activation sur une machine devrait être un problème. Il fait partie de windows.
Nous avons environ 15 à 20 utilisateurs qui auront besoin de ce permis. Ce que je peux utiliser à la place de MSMQ? En gros, les clients seront en envoyant un id et puis listner devrez effectuer certaines tâches par l'identifiant. Il doit être une file d'attente de processus de type, first in first out.
Toutes les files d'attente de solutions de rechange que je connais (RabbitMQ, et ZeroMQ) reposent sur des installations sur les deux extrémités. De files d'attente garantit la livraison de chaque message, exactement une fois. Afin de réaliser que vous avez besoin d'un client sur les deux extrémités. Si vous n'avez pas cette exigence, alors vous n'avez pas vraiment besoin d'utiliser les files d'attente, et vous pouvez utiliser un appel de service web ou quelque chose de similaire.
Merci, vraiment reconnaissant de votre aide.
OriginalL'auteur tom redfern
Refactoriser le MSMQ logique à un service et à appeler le service à partir de votre code, en passant le message. De cette façon, vous n'avez qu'à l'installation de MSMQ sur le serveur.
OriginalL'auteur Keith T. Anderson