Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. ###raw>post.musername###
    Membre actif
    MSMQ: Problème pour créer ou tester l'existence d'une queue sur un serveur distan
    Bonjour,

    Je viens de me lancer avec MSMQ et le C#.

    En local cela fonctionne très bien mais une fois que j'attaque un serveur distant je rencontre deux problèmes, j'ai regardé un peu partout sur le net mais je n'ai rien trouvé.

    Je n'arrive pas a créer une queue à distance alors que en local oui:

    MessageQueue rmQ = new MessageQueue

    L'envoie d'un message fonctionne à condition que je crée moi même la queue manuellement sur le serveur:

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    MessageQueue rmQ = new MessageQueue                            
     ("FormatName<img src="images/smilies/icon_biggrin.gif" border="0" alt="" title=":D" class="inlineimg" />IRECT=OS:brrdss05\\private$\\test");
    rmQ.Send("Haaaa")


    Mais la création d'une queue en code sur le même serveur ne fonctionne pas

    J'ai essayé différentes instructions

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    MessageQueue.Create("FormatName<img src="images/smilies/icon_biggrin.gif" border="0" alt="" title=":D" class="inlineimg" />IRECT=OS:brrdss05\\private$\\test2", true);
    Ou
    MessageQueue.Create("brrdss05\\private$\\test2", true);
    MessageQueue.Create("\\\\brrdss05\\private$\\test2", true);


    Même chose pour le teste d'une queue si elle existe:

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
           if (MessageQueue.Exists("FormatName<img src="images/smilies/icon_biggrin.gif" border="0" alt="" title=":D" class="inlineimg" />IRECT=OS:brrdss05\\private$\\test"))
                    Console.WriteLine("ok");
                else
                    Console.WriteLine("pasok");
     
                Console.ReadLine();


    {"Impossible de déterminer si une file d'attente avec le nom de format spécifié existe."}

    Avez-vous une solution ou une expérience à ce sujet ?

    D'avance merci
      0  0

  2. #2
    Membre actif
    Bon bé les méthodes Create et Exists ne peuvent pas être utilisées pour atteindre une machine distante

    Vais regarder du côté WCF

  3. #3
    Candidat au Club
    Problème avec MSMQ et C#
    Bonjour,

    Je viens de me lancer avec MSMQ et le C#.

    J'ai deux application . Une qui permet l'envoie des messages dans la file d'attente et la seconde qui reçois des messages depuis la file d'attente .

    Au début tout marchait bien et j'arrive à envoyer et recevoir les messages de la files .

    Mais là plus rien ne marche . Ne processus se déroule correctement mais les messages n’apparaît pas dans la file d'attente ce qui est bizarre (je précise que je en suis en local et que la file d'attente crée est une file d'attente transactionnelle)

    J'ai créer d'autres applications et essayer d’interagir avec d'autres files d'attentes que j'ai aussi créées mais même chose , les messages n’apparaît pas dans la file d'attente.

    Je comprend plus rien car ça fait depuis des messages que je cherche cela.

    Aidez moi s'il vous plait . Merci.

    Application 1 qui envoie les messages à la file.

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Messaging;
    using System.Configuration;
     
    namespace ApplicationSendMsgInQueue
    {
        public class MyNewQueue
        {
            static void Main(string[] args)
            {
                MyNewQueue newQueue = new MyNewQueue();
     
                newQueue.SendMessageToQueue();
     
                Console.WriteLine("L'employer a été bien enregistré");
     
                Console.ReadLine();
     
            }
     
            public void SendMessageToQueue()
            {
     
                Employees employees = new Employees();
     
     
                Employees[] employeesTable = new Employees[6];
                employeesTable[0] = new Employees { EmployerID =Guid.NewGuid().ToString() , EmployeesName = "YESSOUFOU", EmployeesLastName = "Mohamed", EmployeesAddress = "15 rue Paris 75019", EmailEmployees = "modyes599@hotmail.com" };
                employeesTable[1] = new Employees { EmployerID =Guid.NewGuid().ToString(), EmployeesName = "YESSOUFOU", EmployeesLastName = "Mourad", EmployeesAddress = "15 rue Paris 75018", EmailEmployees = "modyes199@hotmail.com" };
                employeesTable[2] = new Employees { EmployerID =Guid.NewGuid().ToString(), EmployeesName = "YESSOUFOU", EmployeesLastName = "Adam", EmployeesAddress = "15 rue Paris 75017", EmailEmployees = "modyes99@hotmail.com" };
                employeesTable[3] = new Employees { EmployerID =Guid.NewGuid().ToString(), EmployeesName = "YESSOUFOU", EmployeesLastName = "Ziadath", EmployeesAddress = "15 rue Paris 75016", EmailEmployees = "modyes299@hotmail.com" };
                employeesTable[4] = new Employees { EmployerID =Guid.NewGuid().ToString(), EmployeesName = "YESSOUFOU", EmployeesLastName = "Manzidath", EmployeesAddress = "15 rue Paris 75015", EmailEmployees = "modyes399@hotmail.com" };
                employeesTable[5] = new Employees { EmployerID =Guid.NewGuid().ToString(), EmployeesName = "YESSOUFOU", EmployeesLastName = "Fawaz", EmployeesAddress = "15 rue Paris 75014", EmailEmployees = "modyes499@hotmail.com" };
     
     
     
                MessageQueue Myqueue = new MessageQueue(ConfigurationManager.AppSettings["MessageQueuePath"]);
     
     
                for (int i = 0; i < (employeesTable.Length); i++)
                {
                    Myqueue.Send(employeesTable[i]);
     
                }
     
     
                return;
     
     
            }
        }
    }



    Le chemin d'accès de la file d'attente est:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <appSettings>
        <add key="MessageQueuePath" value="FormatName<img src="images/smilies/icon_biggrin.gif" border="0" alt="" title=":D" class="inlineimg" />irect=OS:.\PRIVATE$\mafilesdatentes"/>
      </appSettings>



    Application 2 qui reçoit des messages depuis la fille

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Messaging;
    using System.Configuration;
     
    namespace ApplicationReadMsgToQueue
    {
        public class Program
        {
            static void Main(string[] args)
            {
     
     
                Console.WriteLine("Liste des enmployés envoyer dans la file d'attente");
     
                MessageQueue MyQueue;
                MyQueue = new MessageQueue(ConfigurationManager.AppSettings["MessageQueuePath"]);
     
                MyQueue.Formatter = new XmlMessageFormatter(new Type[] { typeof(ApplicationReadMsgToQueue.Employees) });
     
                try
                {
                    Message[] myMessage = MyQueue.GetAllMessages();
     
     
     
                    foreach (Message msg in myMessage)
                    {
     
                            Employees myEmployees = (Employees)msg.Body;
     
                            Console.WriteLine("EmployeesID:" + myEmployees.EmployerID.ToString());
     
                            Console.WriteLine("EmployeesName:" + myEmployees.EmployeesName.ToString());
     
                            Console.WriteLine("EmployeesLastName:" + myEmployees.EmployeesLastName.ToString());
     
                            Console.WriteLine("EmployeesAddress:" + myEmployees.EmployeesAddress.ToString());
     
                            Console.WriteLine("EmployeesEmail:" + myEmployees.EmailEmployees.ToString());
     
                            Console.WriteLine("******************************************");
     
                     }
                    Console.ReadLine();
                }
                catch (MessageQueueException)
                {
     
                }
                catch(InvalidOperationException e)
                {
                    Console.WriteLine(e.Message);
                }
     
                return;  
     
            }
        }
    }



    En espérant recevoir une réponse. Je vous remercie d'avance