Discussion:
MSMQT et Orchestration
(trop ancien pour répondre)
Nathalie TETEFORT
2005-03-24 10:58:20 UTC
Permalink
Bonjour,
nous avons le programme .NET suivant (inspiré du SDK) qui envoit un message
vers une queue MSMQT sur un serveur Biztalk :


MessageQueue mq_dest = new
MessageQueue("FormatName:DIRECT=OS:chmstrdev\private$\test_msmq2");
mq_dest.Formatter = new System.Messaging.Message msg = new
System.Messaging.Message();
msg.Label = "TestMessageLabel";
StreamWriter wr = new
StreamWriter(msg.BodyStream,System.Text.Encoding.Unicode);
wr.Write("message body");
wr.Flush();
mq_dest.Send(msg, MessageQueueTransactionType.Single);


Ce programme s'exécute sans erreur.

Nous avons aussi une orchestration Biztalk avec un receive port paramétré
comme suit :
URI : test_msmq2
Transport : MSMQT
Receive Pipeline : Microsoft.DefaultPipeline.PassThruReceive.

Ce port est relié à un receive shape avec un message de type System.String.
L'orchestration est déployée et démarrée (Start).

Quand on envoit un message avec le programme .NET, celui-ci apparait dans le
HAT avec l'état "Suspended", "Service Class" = "Routing Failure Report".Et
dans le gestionnaire d'évènements de Windows, il y a l'erreur suivante :
"MSMQT failed to publish the message coming into the queue
DIRECT=OS:chmstrdev\private$\test_msmq2, because no consumer mas waiting for
it".

Merci d'avance pour votre aide.

Nathalie
Benjamin Guinebertière [MS]
2005-03-25 08:29:39 UTC
Permalink
le problème vient du fait que la réception se fait en PassTrhuReceive et que
vous attendez un String qui n'est donc pas reconnu car pas parsé.

Bizarrement, il faut attendre dans l'orchestration un System.XmlDocument qui
est le type de message générique.
Cela dit, si vous voulez manipuler son contenu, il vous faudra sans doute
définir un format par exemple comme un fichier plat et utiliser un pipeline
avec ce flat file désassembleur dans votre réception MSMQT.
--
Benjamin Guinebertière
Microsoft France

Ce message est fourni en l’état, sans garantie d’aucune sorte, et ne vous
confère aucun droit. Vous assumez tous les risques liés à son utilisation.
Post by Nathalie TETEFORT
Bonjour,
nous avons le programme .NET suivant (inspiré du SDK) qui envoit un message
MessageQueue mq_dest = new
MessageQueue("FormatName:DIRECT=OS:chmstrdev\private$\test_msmq2");
mq_dest.Formatter = new System.Messaging.Message msg = new
System.Messaging.Message();
msg.Label = "TestMessageLabel";
StreamWriter wr = new
StreamWriter(msg.BodyStream,System.Text.Encoding.Unicode);
wr.Write("message body");
wr.Flush();
mq_dest.Send(msg, MessageQueueTransactionType.Single);
Ce programme s'exécute sans erreur.
Nous avons aussi une orchestration Biztalk avec un receive port paramétré
URI : test_msmq2
Transport : MSMQT
Receive Pipeline : Microsoft.DefaultPipeline.PassThruReceive.
Ce port est relié à un receive shape avec un message de type
System.String.
L'orchestration est déployée et démarrée (Start).
Quand on envoit un message avec le programme .NET, celui-ci apparait dans le
HAT avec l'état "Suspended", "Service Class" = "Routing Failure Report".Et
"MSMQT failed to publish the message coming into the queue
DIRECT=OS:chmstrdev\private$\test_msmq2, because no consumer mas waiting for
it".
Merci d'avance pour votre aide.
Nathalie
Loading...