Laden...

Messagequeue komunikation zwischen server und client

Erstellt von stefan1979 vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.531 Views
S
stefan1979 Themenstarter:in
175 Beiträge seit 2007
vor 16 Jahren
Messagequeue komunikation zwischen server und client

Hallo

habe versucht eine Message queue zu erzeugen auf server und client, damit kann der server mit Client komunizieren..

die Code auf Server



System.Messaging.MessageQueue mq;
		if(MessageQueue.Exists(@".\Private$\MyQueue"))
				mq = new System.Messaging.MessageQueue(@".\Private$\MyQueue");
			else
				mq = MessageQueue.Create(@".\Private$\MyQueue");

code auf dem Client Seite:



        this.messageQueue1.Formatter = new System.Messaging.XmlMessageFormatter(new string[0]);
            this.messageQueue1.Path = "Formatname:DIRECT=TCP:192.168.2.40\\Private$\\MyQueue";

192.168.2.40 ist mein IP.

wenn ich auf dem Client eine Nachrichten an Server schicke, bekomme ich immer Error


{"The queue does not exist or you do not have sufficient permissions to perform the operation."}

was habe ich falsch gemacht ? vermutte ich auf dem Client

"Formatname:DIRECT=TCP:192.168.2.40\Private$\myQueue";

Gruss
Stefan

915 Beiträge seit 2006
vor 16 Jahren

Hrm, würde mal auf den ersten Blick das Format vermuten:

Denke hällst in der queue nur nen string, daher folgendes Format:


... new XmlMessageFormatter(new Type[] {typeof(string})


und dann eben noch das hier, hinterlegst die NAchricht ja auf dem Server und nicht auf deinen Client - Evtl. habe ich das auch verkehrt herum verstanden?


Formatname:DIRECT=TCP:<ServerIP>\\Private$\\myQueue

Das hier sind die Formate:


FormatName:Public= 5A5F7535-AE9A-41d4-935C-845C2AFF7112

FormatName:DIRECT=SPX: NetworkNumber; HostNumber\QueueName

FormatName:DIRECT=TCP: IPAddress\QueueName

FormatName:DIRECT=OS: MachineName\QueueName

Link1
Link2

Wie vernichtet stand Andreas unter den flammenden Augen seiner Kunden.
Ihm war's, als stünde des Schicksals dunkle Wetterwolke über seinem Haupte X(

S
stefan1979 Themenstarter:in
175 Beiträge seit 2007
vor 16 Jahren

Hallo Andreas.May

danke für deine Hilfe. noch eine kleine Frage. Kann public Queue auf windows Xp erzeugt werden ?

Die folgende information habe ich im Netz gefunden. Link


Queue Type  	Description  	                                       
Public queue 	Registered in directory services, can be located by any Message  
                      QueuinNG applications 	


ich habe so verstanden, dass die pulbic Queue nicht auf Windows Xp erzeugt werden ? oder

Gruss
Stefan

S
stefan1979 Themenstarter:in
175 Beiträge seit 2007
vor 16 Jahren

Hallo

Oder Private Queue geht nur die Local verbindung. mein Client und server haben verschiedene IP, deswegen ??? 🤔 🤔 🤔

Gruss
Stefan

915 Beiträge seit 2006
vor 16 Jahren

Also ist ne weile her bei mir, hatte das nur mal in Verbindung mit einen SQL 200 Server um Nachrichten von der SQL Datenbank auf dem Server zu erzeugen, gebraucht. Evtl. habe ich das Projekt sogar noch zu Hause

Private Queue geht nur die Local verbindung, sprich wenn eine private Queue erzeugst auf einem Rechner, kann nur dieser Rechner diese Nachricht verarbeiten. Das macht grade bei einer Datenbank Sinn - früher gabs ja keine TransactionNotification wie sie der SQL Server 2005 anbietet. Daher konnte man anhand des MSMSQ Dienstes Add's Delete's oder Update's auf der Datenbankseite mitbekommen für die jeweiligen Tabellen und schichtete diese Nachrichten wieder auf C# Code um.

Für deine Zwecke reichen public Queues..
Habe vorrhin auch den Fehler nicht gesehen, muss dann natürlich public$ heissen und nicht private$ 🙂

Gibt nen guten MS Artikel dazu:Link.

Wie vernichtet stand Andreas unter den flammenden Augen seiner Kunden.
Ihm war's, als stünde des Schicksals dunkle Wetterwolke über seinem Haupte X(