是否有一个工具允许从消息队列(MSMQ)轻松导出消息?

时间:2009-05-06 15:31:34

标签: c# msmq

我目前正在使用C#中的MSMQ处理批处理应用程序。在应用程序设计中,我有一个包含使用ActiveXFormatter的XML消息的错误队列。我知道我可以编写一个应用程序来将这些错误消息写入文本文件或数据库表。

是否还有其他预构建的工具可用于将邮件导出为各种格式(即文本文件,数据库表等)?我只是在寻找最佳实践。

1 个答案:

答案 0 :(得分:4)

确定。我发现编写代码的解决方案非常简单。这是我的参考解决方案。

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