5. 設定

5.1. API サーバ側の設定

SSE Push サーバとモバイルバックエンド基盤サーバを連携させるために、 モバイルバックエンド基盤 APIサーバの設定ファイルに以下の項目を追記してください。

(設定ファイルの記述方法については、サーバ利用手順書の コンフィグレーション を参照してください。)

項目名 説明
amqp.uri MBaaS API サーバからみた RabbitMQ の AMQP Broker URI

以下に例を示します。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
   <!-- (中略) -->
   <entry key="amqp.uri">amqp://rabbitmq:rabbitmq@rabbitmq.local:5672</entry>
</properties>

また、デベロッパーコンソールの「システム設定」より、「SSE Push サーバ公開URI」を設定してください。 本URI は、クライアントから見た SSE Push サーバの URI です。(末尾の '/events' まで必要)

注意

SSE Push サーバ公開 URI はクライアントに通知する URI になりますので、必ずクライアントから到達可能な URI を記述してください。 ホスト名に 'localhost' などを指定してはいけません。

5.2. SSE Push サーバ 設定ファイル

SSE Push サーバの設定ファイルは XML で作成します。配置場所は以下のいずれかです。

  • /etc/ssepush/config.xml
  • (Tomcat実行ユーザのホームディレクトリ)/.ssepush/config.xml

設定ファイルはアプリケーションの初期化時に読み込まれますので、 内容を変更した場合はアプリケーションサーバの再起動が必要です。

5.2.1. 設定ファイルの書式

設定ファイルの書式は以下の通りです。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
    <!-- AMQP URI -->
    <entry key="amqpUri">amqp://localhost:5672</entry>

    <!-- Hazelcast 設定ファイルのパス -->
    <!--
    <entry key="hazelcastConfig">file:/etc/ssepush/hazelcastConfig.xml</entry>
    -->

    <!-- SSE ハートビート間隔(秒) -->
    <!--
    <entry key="heartbeatIntervalSec">30</entry>
    -->
</properties>
  • amqpUri : AMQP サーバの URI
  • hazelcastConfig: Hazelcast 設定ファイルのパス。デフォルトは file:/etc/ssepush/hazelcastConfig.xml
  • hearbeatIntervalSec: SSE Push サーバが各クライアントに定期送信するハートビートメッセージの間隔(単位:秒)。デフォルトは30秒。
    • ハートビートメッセージは、1) SSE接続が切れないように維持するため、2) クライアントの生存確認、のために送信されます。
    • 長くすることでクライアント側のバッテリ消耗を抑えることができますが、NATやプロキシサーバが間に存在する場合はそれらのタイムアウト値よりも長くしてはなりません。

amqpUri の設定は必須です。 それ以外については省略可能で、省略した場合はデフォルト値が用いられます。

5.3. クラスタリング

クラスタリングを行う場合は、Hazelcast の設定変更が必要です。 (デフォルトはスタンドアロン構成)

設定ファイルを /etc/ssepush/hazelcastConfig.xml などに配置し、 config.xml には以下のように設定を行います。

<entry key="hazelcastConfig">file:/etc/ssepush/hazelcastConfig.xml</entry>

Hazelcast 設定の詳細は、 Hazelcast Documentation を参照してください。

5.3.1. マルチキャストを使用する場合

マルチキャストを使用する場合の hazelcastConfig.xml の例を示します。

<?xml version="1.0" encoding="UTF-8"?>
<hazelcast xsi:schemaLocation="http://www.hazelcast.com/schema/config hazelcast-config-3.5.xsd"
          xmlns="http://www.hazelcast.com/schema/config"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

   <!-- 共通設定のロード。本指定は必須です。 -->
   <import resource="classpath:CommonHazelcastConfig.xml"/>

   <!-- クラスタグループ定義 -->
   <group>
       <name>ssepush</name>
       <password>Passw0rD</password>
   </group>

   <!-- ネットワーク設定 -->
   <network>
       <reuse-address>true</reuse-address>
       <port auto-increment="false">5701</port>
       <join>
           <!-- マルチキャスト設定 -->
           <multicast enabled="true">
               <multicast-group>224.2.2.3</multicast-group>
               <multicast-port>54327</multicast-port>
               <multicast-time-to-live>32</multicast-time-to-live>
               <multicast-timeout-seconds>10</multicast-timeout-seconds>
           </multicast>

           <tcp-ip enabled="false"/>
           <aws enabled="false"/>

       </join>
   </network>
</hazelcast>

注意

AWS を使用する場合、VPC 内でマルチキャストを使用することができません。 以下のユニキャストを使用する場合の設定を使用するか、 aws 設定を使用します。aws 設定については Hazelcastのマニュアルを参照してください。

5.3.2. ユニキャスト(tcp-ip)を使用する場合

マルチキャストではなくユニキャストを使用する場合は、tcp-ip タグでメンバ(SSE Push サーバ群)の IPアドレス/ポート番号を個別に指定する必要があります。

以下に hazelcastConfig.xml の例を示します。tcp-ip 内の member にメンバを指定します。

<?xml version="1.0" encoding="UTF-8"?>
<hazelcast xsi:schemaLocation="http://www.hazelcast.com/schema/config hazelcast-config-3.5.xsd"
          xmlns="http://www.hazelcast.com/schema/config"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

   <!-- 共通設定のロード。本指定は必須です。 -->
   <import resource="classpath:CommonHazelcastConfig.xml"/>

   <!-- クラスタグループ定義 -->
   <group>
       <name>ssepush</name>
       <password>Passw0rD</password>
   </group>

   <!-- ネットワーク設定 -->
   <network>
       <reuse-address>true</reuse-address>
       <port auto-increment="false">5701</port>
       <join>
           <!-- ユニキャスト設定 -->
           <multicast enabled="false" />

           <tcp-ip enabled="true">
               <member>10.0.0.1:5701</member>
               <member>10.0.0.2:5701</member>
               <member>10.0.0.3:5701</member>
           </tcp-ip>

           <aws enabled="false"/>
       </join>
   </network>
</hazelcast>