■ MSMQのパフォーマンス向上するには
* BinaryMessageFormatterを使うといい
参考文献
http://msdn.microsoft.com/ja-jp/library/system.messaging.binarymessageformatter(v=vs.80).aspxより抜粋 BinaryMessageFormatter のスループットは、XmlMessageFormatter のスループットよりも高速です。 疎結合されたメッセージ処理よりも速度を優先する場合は BinaryMessageFormatter を使用します。http://msdn.microsoft.com/ja-jp/library/dd297659.aspx
より抜粋 Binary フォーマッタはデフォルトの XML フォーマッタよりも高速なので、 MSMQ を使った処理のパフォーマンスが問題になる場合には、 このフォーマッタの使用を検討する価値があります。
■ 補足:BinaryMessageFormatterについて
* 画像ファイルなどのバイナリ・データを送受信したい時にも使えるhttp://www.atmarkit.co.jp/fdotnet/chushin/introwinform_05/introwinform_05_03.html
サンプル
public partial class Form1 : Form { private List<DataItemContainer> dataItems; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { var queue = new MessageQueue(@".\private$\msmq_sample"); var message = new System.Messaging.Message( queue, new BinaryMessageFormatter()); var container = new DataItemContainer { Item = "ID", Value = this.textBox1.Text, }; message.Body = container; message.Label = this.textBox2.Text; queue.Send(message); this.label1.Text = "管理ツールからメッセージキューを確認してみて下さい"; } private void button2_Click(object sender, EventArgs e) { var queue = new MessageQueue((@".\Private$\msmq_sample")); queue.Formatter = new BinaryMessageFormatter(); var message = queue.Receive(); string output = string.Empty; var container = message.Body as DataItemContainer; if (container != null) { output = container.Item + " : " + container.Value + "\n"; } else { output = "失敗"; } this.label1.Text = message.Label.ToString() + "\n" + output; } } [Serializable()] public class DataItemContainer { public string Item { get; set; } public string Value { get; set; } }
関連記事
MSMQ
メッセージキュー ~ 基本編 ~https://blogs.yahoo.co.jp/dk521123/29398213.html
メッセージキュー ~ 環境設定編 ~
https://blogs.yahoo.co.jp/dk521123/29372187.html
メッセージキュー に関するトラブルシューティング
https://blogs.yahoo.co.jp/dk521123/30137388.html