C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: MessageQueueを使ったプロセス間通信


(過去ログ 11 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■2344 / inTopicNo.1)  MessageQueueを使ったプロセス間通信
  
□投稿者/ キュー (1回)-(2007/04/03(Tue) 14:45:25)

分類:[VB.NET (Windows)] 

MessageQueueを使用してプロセス間のメッセージ通信を行っています。
プロセスの構成は複数業務プロセスと制御プロセスで構成されています。
この業務プロセスと制御プロセス間でメッセージ通信を行っているとまれにメッセージが破棄
されてしまうような事象がおきてしまいました・・・
詳細については以下に示します。
また各プロセスに受信用のMessageQueueと送信用のMessageQueueを実装しています。
キューの参照はパス参照を使用し、キューの種類はプライベートキューを使用しております。

【事象】
@制御プロセス←業務プロセス(起動通知)・・・・業務プロセスが起動したことを通知
A制御プロセス→業務プロセス(初期通知)・・・・起動後に初期情報を通知

@のメッセージは制御プロセス側で受信できるのですが、Aの時に、業務プロセスが受信できず待機状態が続くことになっています。
(ログをみると制御プロセスはメッセージを送信した状態になっています。)

このような事象が起きた場合原因として何が考えられるでしょうか?
参考にしたいので何か思うことがありましたらよろしくお願い致します。

引用返信 編集キー/
■2420 / inTopicNo.2)  Re[1]: MessageQueueを使ったプロセス間通信
□投稿者/ 純@WAS (3回)-(2007/04/06(Fri) 17:09:19)
MQをご使用ということでしょうか。

MQをご使用中の場合は、ベンダによっても仕様が異なりますが(私はIBMのWMQを使用しております)、
私が知っている事例の中で以下の通り回答いたします。

一般的なMQで発生する同様のエラーと致しまして、
送信キューから受信キューにメッセージを伝送した場合、
チャネル間の不整合で、通信要求を出しているにも関わらず、
相手との接続が確立出来ないまま、タイムアウトが発生し
送信しようとしたメッセージがロールバックされると言う事例がございます。

以下の点をご確認下さい。
・ポート(使用している場合)の競合は発生していませんか。
 場合によっては競合していてもエラーが返されないケースもございます。

・受信キューは稼動していましたか。
 たまに自動切断されるケースもございます(まれですが)

・待機状態が解除されない場合は、明示的にメッセージをゲットする設定(ボタン、コマンド)を組むのもありです。
 (コーディングの話となりますが)
 明示的にゲットしたら、現象は改善されますか。

・メッセージ長は受信キュー及び送信キューの許容範囲でしたか。
 (ここで引っかかるケースもございます。メッセージが許容を超えたが為に、タイムアウト)

不安なら全メッセージをパーシステント属性(永続属性)にした上で運用するのもありです。
但しパフォーマンスは落ちるので、その点はご考慮下さい。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -