【MSMQ】メッセージキュー ~ 基本編 ~

■ ポイント

 * 「System.Messaging」を参照設定を追加する必要がある★重要★
 * 事前に「メッセージキューのインストール」を行っておく(以下を参照のこと)
https://blogs.yahoo.co.jp/dk521123/29372187.html
 * 管理ツールからメッセージキューのメッセージを確認できる
 * MessageQueue.Formatterを設定する(XML, Binary ...)

参考文献

http://d.hatena.ne.jp/m_yamamo0417/20091127/1259319361

■ 専用キューが存在しているかを判別する

 * MessageQueue.Exists()を使う

サンプル

private void button1_Click(object sender, EventArgs e)
{
    // 「private$\msmq_sample」については、
    // 右クリックして[プロパティ]で調べることができる
    if (MessageQueue.Exists(@".\private$\msmq_sample"))
    {
        this.label1.Text = "存在します";
    }
    else
    {
        this.label1.Text = "存在しない";
    }
}

参考文献

http://www.itlab51.com/?p=4295

■ 専用キューを作成する

 * MessageQueue.Create()を使う

参考文献

http://www.itlab51.com/?p=2322

■ 専用キューを削除する

 * MessageQueue.Delete()を使う

参考文献

http://www.itlab51.com/?p=4538

■ メッセージキューにメッセージを送信する

サンプル

private void button2_Click(object sender, EventArgs e)
{
    var queue = new MessageQueue(@".\private$\msmq_sample");
    queue.Formatter = new XmlMessageFormatter(
        new Type[] { typeof(String) });
    var message = new System.Messaging.Message();
    message.Body = "メッセージ・ボディです";
    message.Label = "メッセージ・ラベルです";
    queue.Send(message);

    this.label1.Text = "管理ツールからメッセージキューを確認してみて下さい";
}

参考文献

http://www.itlab51.com/?p=4111
http://orion.bluememe.jp/2011/08/msmq.html
http://www.atmarkit.co.jp/fdotnet/chushin/introwinform_05/introwinform_05_03.html

■ メッセージキューからメッセージを受信する

サンプル

private void button3_Click(object sender, EventArgs e)
{
    var queue = new MessageQueue((@".\Private$\msmq_sample"));
    var message = new System.Messaging.Message();
    message = queue.Receive();
    message.Formatter = new XmlMessageFormatter(
        new Type[] { typeof(String) });
    
    this.label1.Text = message.Body.ToString();
}

参考文献

http://www.itlab51.com/?p=4173


関連記事

MSMQ

メッセージキュー ~ 環境設定編 ~
https://blogs.yahoo.co.jp/dk521123/29372187.html
メッセージキュー ~ パフォーマンス向上するには ~
https://blogs.yahoo.co.jp/dk521123/29399386.html
メッセージキュー に関するトラブルシューティング
https://blogs.yahoo.co.jp/dk521123/30137388.html