此内容没有您所选择的语言版本。
8.3. Cartridge Event Example
In this example, an application developer adds a MySQL database cartridge to a PHP application. The publish and subscribe relationship between the cartridges enables the PHP cartridge to set environment variables on its gear so it can connect to the new MySQL cartridge, which is on a different gear.
MySQL Cartridge as Publisher
The MySQL cartridge lists a publish-mysql-connection-info event in the Publishes section of its mysql/metadata/manifest.yml file:
Publishes:
publish-mysql-connection-info:
Type: "NET_TCP:db:mysql"
Publishes:
publish-mysql-connection-info:
Type: "NET_TCP:db:mysql"
The MySQL cartridge implements a script in
mysql/hooks/publish-mysql-connection-info.
PHP Cartridge as Subscriber
The PHP cartridge lists a set-mysql-connection-info event in the Subscribes section of its php/metadata/manifest.yml file:
Subscribes:
set-mysql-connection-info:
Type: "NET_TCP:db:mysql"
Subscribes:
set-mysql-connection-info:
Type: "NET_TCP:db:mysql"
The PHP cartridge implements a script in
php/hooks/set-mysql-connection-info.
Cartridge Event Communication Process
OpenShift Enterprise matches the event Type in the PHP cartridge's Subscribes list to the event Type in the MySQL cartridge's Publishes list. In this example, the event Type is "NET_TCP:db:mysql".
The MySQL cartridge's
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
publish-mysql-connection-info script outputs the username, host, port, URL, and password required to connect to the MySQL instance:
OpenShift Enterprise sends the output of the MySQL cartridge's
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
publish-mysql-connection-info to the PHP cartridge's set-mysql-connection-info script using the following format:
hooks/publish-mysql-connection-info gear_name namespace gear_uuid 'OPENSHIFT_MYSQL_DB_USERNAME=username;OPENSHIFT_MYSQL_DB_PASSWORD=password;OPENSHIFT_MYSQL_DB_HOST=hostname;OPENSHIFT_MYSQL_DB_PORT=port;OPENSHIFT_MYSQL_DB_URL=url;'
hooks/publish-mysql-connection-info gear_name namespace gear_uuid 'OPENSHIFT_MYSQL_DB_USERNAME=username;OPENSHIFT_MYSQL_DB_PASSWORD=password;OPENSHIFT_MYSQL_DB_HOST=hostname;OPENSHIFT_MYSQL_DB_PORT=port;OPENSHIFT_MYSQL_DB_URL=url;'
Note that the publisher script determines the format of the information input to the subscriber script. When writing subscriber scripts, ensure that they parse the input correctly.