Existe-t-il un outil permettant d’exporter facilement des messages à partir d’une file de messages (MSMQ)?

StackOverflow https://stackoverflow.com/questions/830194

  •  06-07-2019
  •  | 
  •  

Question

Je travaille actuellement sur une application de traitement par lots utilisant MSMQ en C #. Dans la conception de l'application, j'ai une file d'erreurs contenant des messages XML à l'aide de ActiveXFormatter . Je sais que je peux écrire une application pour écrire ces messages d'erreur dans des fichiers texte ou des tables de base de données.

Existe-t-il d'autres outils préconfigurés permettant d'exporter des messages vers différents formats (fichiers texte, tables de base de données, etc.)? Je recherche simplement les meilleures pratiques.

Était-ce utile?

La solution

Ok. J'ai trouvé la solution d'écrire du code très simple. Voici ma solution de référence.

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 ExportMSMQMessagesToFiles
{
    public partial class frmMain : Form
    {
        public frmMain()
        {
            InitializeComponent();
        }

        private void btnExportTextFiles_Click(object sender, EventArgs e)
        {           
            //Setup MSMQ using path from user...
            MessageQueue q = new MessageQueue(txtMSMQ.Text);

            //Setup formatter... Whatever you want!?
            q.Formatter = new ActiveXMessageFormatter();

            // Loop over all messages and write them to a file... (in this case XML)
            MessageEnumerator msgEnum = q.GetMessageEnumerator2();
            int k = 0;
            while (msgEnum.MoveNext())
            {
                System.Messaging.Message msg = msgEnum.Current;                                
                string fileName = this.txtFileLocation.Text + "\\" + k + ".xml";                
                System.IO.File.WriteAllText(fileName, msg.Body.ToString());
                k++;
            }

            MessageBox.Show("All done!");
        }
    }
}

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top