JBoss MessagingでJMSメッセージをbridgeする
JBoss MessagingでJMSメッセージのブリッジを行おうとした際に、ファイアフォール越しでのブリッジに手間どってしまいました。そこで、今日はそのときのメモとしてブリッジに必要なポートについてのお話しです。
なお、今回の環境は以下の通りです。
私は、SMTPサーバの受信サーバと送信サーバをインターネット越しに分離した構成で使っています。これまでそのサーバ間をSMTPで接続していた部分を、JMSメッセージのブリッジに置き換えようと考えたのが使用目的です。
ISPのメンテナンスや通信機器の障害などによって数時間のネットワーク障害が発生することがあります。その結果、ネットワークが回復しても、メールが大きく遅延する、タイムアウトしてエラーメールとして戻ってくるといったことがありました。
もちろん、SMTPサーバにはメールを再送する機能があります。そのおかけで一時的にネットワーク障害が発生してもメールを送信できる仕組みになっています。しかし、一般的なSMTPサーバの実装では、再送を試みる期間が(私にとって)短かったり、次に再送を試みるまでの間隔が(私にとって)長かったりするのです。
JMSメッセージのブリッジでは、十分に短い間隔でネットワークの状況をチェックしていますので、サーバ間のネットワークが回復すると即座にメッセージを送信することができます。この点が魅力です。
■
JBoss AS 4.2でJBoss Messagingを使ったJMSメッセージのブリッジを利用するためには、JBoss Messagingをインストールし、JMSメッセージのブリッジサービスの設定が必要です。
しかし、ここではその手順を示していません。
以下のドキュメントに沿ってJBoss Messagingのインストール、JMSメッセージのブリッジサービスの設定を行ってください。
■
さて、上記のドキュメントに沿ってJMSメッセージのブリッジを設定するなかで、ファイアフォール関連で戸惑うかもしれません。
その場合には、以下のドキュメントが参考になります。
今回、ブリッジを行うサーバ間で必要になる通信要件は以下の通りです。
そして、一番の肝となる「4. TCPの4458番ポートへの通信」については、明示的な設定が必要になります。
○クライアント側(ブリッジ元)の設定
サーバの4458番ポートに接続するために、「secondaryConnectPort」に「4458」を設定します。
(編集後)
○サーバ側(ブリッジ先)の設定
4458番ポートで待ち受けるように、「secondaryBindPort」に「4458」を設定します。
(編集後)
以上です。
なお、今回の環境は以下の通りです。
-
JBoss Application Server (JBoss AS) 4.2.3
JBoss Messaging 1.4.0.SP3
私は、SMTPサーバの受信サーバと送信サーバをインターネット越しに分離した構成で使っています。これまでそのサーバ間をSMTPで接続していた部分を、JMSメッセージのブリッジに置き換えようと考えたのが使用目的です。
ISPのメンテナンスや通信機器の障害などによって数時間のネットワーク障害が発生することがあります。その結果、ネットワークが回復しても、メールが大きく遅延する、タイムアウトしてエラーメールとして戻ってくるといったことがありました。
もちろん、SMTPサーバにはメールを再送する機能があります。そのおかけで一時的にネットワーク障害が発生してもメールを送信できる仕組みになっています。しかし、一般的なSMTPサーバの実装では、再送を試みる期間が(私にとって)短かったり、次に再送を試みるまでの間隔が(私にとって)長かったりするのです。
JMSメッセージのブリッジでは、十分に短い間隔でネットワークの状況をチェックしていますので、サーバ間のネットワークが回復すると即座にメッセージを送信することができます。この点が魅力です。
■
JBoss AS 4.2でJBoss Messagingを使ったJMSメッセージのブリッジを利用するためには、JBoss Messagingをインストールし、JMSメッセージのブリッジサービスの設定が必要です。
しかし、ここではその手順を示していません。
以下のドキュメントに沿ってJBoss Messagingのインストール、JMSメッセージのブリッジサービスの設定を行ってください。
■
さて、上記のドキュメントに沿ってJMSメッセージのブリッジを設定するなかで、ファイアフォール関連で戸惑うかもしれません。
その場合には、以下のドキュメントが参考になります。
今回、ブリッジを行うサーバ間で必要になる通信要件は以下の通りです。
-
ファイアフォール越しでブリッジを行う場合には、クライアント側(ブリッジ元)からサーバ側(ブリッジ先)に対して以下の通信が行える必要があります。
1. TCPの1098番ポートへの通信(ネーミングサービス)
2. TCPの1099番ポートへの通信(ネーミングサービス)
3. TCPの4457番ポートへの通信(メッセージングサービス)
4. TCPの4458番ポートへの通信(メッセージングサービス)
※ポート番号は、デフォルト設定の場合です。
※サーバ側からクライアント側への要件はありません。
-
ネーミングサービス
conf/jboss-service.xml
メッセージングサービス
deploy/jboss-messaging.sar/remoting-bisocket-service.xml
そして、一番の肝となる「4. TCPの4458番ポートへの通信」については、明示的な設定が必要になります。
○クライアント側(ブリッジ元)の設定
サーバの4458番ポートに接続するために、「secondaryConnectPort」に「4458」を設定します。
-
クライアント側:
deploy/jboss-messaging.sar/remoting-bisocket-service.xml
(編集前)
<!-- Use these parameters to specify values for binding and connecting control connections to work with your firewall/NAT configuration <attribute name="secondaryBindPort">xyz</attribute> <attribute name="secondaryConnectPort">abc</attribute> -->
(編集後)
<!-- Use these parameters to specify values for binding and connecting control connections to work with your firewall/NAT configuration <attribute name="secondaryBindPort">xyz</attribute> --> <attribute name="secondaryConnectPort">4458</attribute>
○サーバ側(ブリッジ先)の設定
4458番ポートで待ち受けるように、「secondaryBindPort」に「4458」を設定します。
-
サーバ側:
deploy/jboss-messaging.sar/remoting-bisocket-service.xml
(編集前)
<!-- Use these parameters to specify values for binding and connecting control connections to work with your firewall/NAT configuration <attribute name="secondaryBindPort">xyz</attribute> <attribute name="secondaryConnectPort">abc</attribute> -->
(編集後)
<!-- Use these parameters to specify values for binding and connecting control connections to work with your firewall/NAT configuration <attribute name="secondaryConnectPort">abc</attribute> --> <attribute name="secondaryBindPort">4458</attribute>
以上です。