メッセージングサーバーとの接続を確立する

# SAMConnection::connect

(PECL sam >= 0.1.0)

SAMConnection::connect — メッセージングサーバーとの接続を確立する

### 説明

SAMConnection::connect ( string `$protocol` [, array `$properties` ] ) : bool

SAMConnection オブジェクトに対して "connect" メソッドをコールすると、 PHP スクリプトをメッセージングサーバーと接続させます。 接続が作成されるまでは、メッセージの送受信は行われません。

### パラメータ

`protocol`

  構造化文字列で、メッセージングサーバーに接続する際に使用するプロトコル指定します。 サポートされるプロトコルについては、それぞれ対応する定数が存在します。 通常はこの定数を使用しますが、 お望みに応じてスクリプト中で動的に文字列を作成することもできます。 この文字列はふたつの部分からなります。最初の部分がプロトコル識別子で、 その次がプロトコルのオプションです。このふたつをコロン (:) で連結します。使用可能な値は次の表のとおりです。

  プロトコル文字列 | 定数 | 使用法
  --- | --- | ---
  mqtt | SAM_MQTT | MQTT (MQ Telemetry Transport) プロトコルを使用して クライアントからサーバーに接続します。
  wmq | SAM_WMQ | IBM MQSeries プロトコルを使用してリモートのメッセージングサーバーに接続します。 これは "wmq:client" (SAM_WMQ_CLIENT) と同じです。 オプションの配列に、ブローカ名 (SAM_BROKER) を指定する必要があります。
  wmq:client | SAM_WMQ_CLIENT | IBM MQSeries プロトコルを使用してリモートのメッセージングサーバーに接続します。 オプションの配列に、ブローカ名 (SAM_BROKER) を指定する必要があります。
  wmq:bindings | SAM_WMQ_BINDINGS | IBM MQSeries プロトコルを使用してローカルのメッセージングサーバーに接続し、 共有メモリを使用して通信します。 オプションの配列に、ブローカ名 (SAM_BROKER) を指定する必要があります。
  wpm | SAM_WPM | IBM WebSphere Platform Messaging プロトコルを使用して、 WebSphere Application サーバーあるいはクラスタのメッセージングシステムに接続します。 オプションの配列に、バス名 (SAM_BUS) を指定する必要があります。 また、エンドポイントとターゲットチェインも指定します。
  rtt | SAM_RTT | IBM Realtime トランスポートプロトコルを使用して、 メッセージングシステムに接続します。

`properties`

  オプションの連想配列で、接続の際に必要な詳細情報を表すプロパティを指定します。 以下の表に、使用できるプロパティ名とその値をまとめます。

  プロパティ名 | デフォルト値 | 使用法
  --- | --- | ---
  SAM_BROKER | none | メッセージングサーバー上で稼動するブローカあるいはキューマネージャの名前。 このプロパティは、WebSphere MQSeries プロトコル (SAM_WMQ, SAM_WMQ_CLIENT, SAM_WMQ_BINDINGS) を使用する場合に必須となります。
  SAM_HOST | localhost | メッセージングサーバーが稼動しているマシンのホスト名。
  SAM_PORT | SAM_WMQ の場合は 1414、 SAM_WPM の場合は 1506、 SAM_MQTT の場合は 1883 | メッセージングサーバーに接続する際のポート番号。
  SAM_EXPIRE_AFTER | 0 | メッセージが有効期限切れとみなされ、キューから削除されるまでの時間を ミリ秒で指定します。デフォルト値は 0 で、これは決して期限切れにならないことを意味します。 警告: まだ実装されていません!
  SAM_MESSAGE_PERSISTENCE | none | メッセージを、配送中に持続させるかどうかを指定します。 SAM_PERSISTENT あるいは SAM_NON_PERSISTENT のいずれかです。 デフォルトは、接続の形式と接続先メッセージングサーバーの機能に依存します。 警告: まだ実装されていません!
  SAM_MQTT_CLEANSTART | `FALSE` | 任意で指定する接続オプションで、 MQTT サーバーに対してこのクライアントのこれまでの接続データを削除するよう指示します。 また、クライアントが明示的あるいは不意に接続を切断した際には購読を削除するようにします。 この値を `TRUE` にすると、クライアントが接続した際に SAM は既存の購読を破棄します。また、クライアントが接続を切断する際にも購読を破棄します。 このオプションを `FALSE` に設定するかあるいはデフォルトを使用すると、 購読は永続的なものとなり、クライアントの接続が切断されても生き残ります。
  SAM_PASSWORD | none | 接続先メッセージングサーバーが認証を要求した際に使用するパスワードを指定します。
  SAM_TRANSACTIONS | SAM_AUTO | この接続でのトランザクションの処理方法を指示します。 SAM_AUTO (デフォルト) の場合は、操作単位で自動的にトランザクションを処理します。 SAM_MANUAL の場合は、PHP スクリプトでトランザクションの範囲を制御できるようになります。 SAM_MANUAL を使用している場合は、コミットを行わずにスクリプトが終了したり コミットを行わずに接続が閉じられた場合に、処理中のトランザクションがロールバックされます。
  SAM_USERID | none | 接続先メッセージングサーバーが認証を要求した際に使用するユーザー ID を指定します。
  SAM_WPM_DUR_SUB_HOME | none | 永続的な購読を管理するメッセージングエンジンの名前 (WPM のみ)。

### 返り値

このメソッドは、エラーが発生した場合に `FALSE` を返します。

### 例

例1 IBM MQSeries プロトコル (WMQ) を使用したメッセージングサーバーへの接続の作成

`<?php
$conn->connect(SAM_WMQ, array(SAM_HOST => 'Myhost.myco.com', SAM_PORT => 1506, SAM_BROKER => 'MyBroker'));
?>`

例2 トランザクション制御を指定し、 デフォルトのホストとポートを使用した接続の作成

`<?php
$conn->connect(SAM_WMQ, array(SAM_BROKER => 'MyBroker', SAM_TRANSACTIONS => SAM_MANUAL));
?>`

例3 IBM WebSphere Platform Messaging プロトコル (WPM) を使用したメッセージングサーバーへの接続の作成

`<?php
$conn->connect(SAM_WPM, array(SAM_ENDPOINTS => 'localhost:7278:BootstrapBasicMessaging',
SAM_BUS => 'Bus1', SAM_TARGETCHAIN => 'InboundBasicMessaging'));
?>`

### 参考

- SAMConnection::isConnected
- SAMConnection::disconnect