Esiste uno strumento che consente di esportare facilmente i messaggi da una coda di messaggi (MSMQ)?
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.
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