Esiste uno strumento che consente di esportare facilmente i messaggi da una coda di messaggi (MSMQ)?

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

  •  06-07-2019
  •  | 
  •  

Domanda

Attualmente sto lavorando su un'applicazione di elaborazione batch utilizzando MSMQ in C #. Nella progettazione dell'applicazione, ho una coda di errori contenente messaggi XML che utilizzano ActiveXFormatter . So che posso scrivere un'applicazione per scrivere questi messaggi di errore su file di testo o tabelle di database.

Sono disponibili altri strumenti predefiniti che ti consentono di esportare i messaggi in vari formati (ad esempio file di testo, tabelle di database, ecc.)? Sto solo cercando le migliori pratiche.

È stato utile?

Soluzione

Ok. Ho trovato la soluzione di scrittura del codice davvero semplice. Ecco la mia soluzione di riferimento.

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!");
        }
    }
}

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top