このドキュメントは、mpaaschannel または Dubbo API サービスを公開する業務システムなど、ゲートウェイの Service Provider Interface (SPI) を統合したシステムを対象としています。HTTP API を使用する業務システムには適用されません。

ゲートウェイパッケージのインポート
プロジェクトのメイン pom.xml ファイルに、以下のパッケージをインポートします。プロジェクトにこれらの依存関係がすでに存在する場合は、このステップをスキップできます。
すべての基本的な依存関係をインポートする必要があります。
基本的な依存関係
<dependency>
<groupId>com.alipay.gateway</groupId>
<artifactId>mobilegw-unify-spi-adapter</artifactId>
<version>1.0.5.20201010</version>
</dependency>
<dependency>
<groupId>com.alipay.gateway</groupId>
<artifactId>mobilegw-unify-log</artifactId>
<version>1.0.5.20201010</version>
</dependency>
<dependency>
<groupId>com.alipay.hybirdpb</groupId>
<artifactId>classparser</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.5</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.72_noneautotype</version>
</dependency>
<dependency>
<groupId>com.alipay.gateway</groupId>
<artifactId>mobilegw-unify-common</artifactId>
<version>1.0.5.20201010</version>
</dependency>MPC 依存関係
<dependency>
<groupId>com.alipay.gateway</groupId>
<artifactId>mobilegw-unify-spi-mpc</artifactId>
<version>1.0.5.20201010</version>
</dependency>
<dependency>
<groupId>com.alipay.mpaaschannel</groupId>
<artifactId>common</artifactId>
<version>2.4.2019040801</version>
</dependency>
<dependency>
<groupId>com.alipay.mpaaschannel</groupId>
<artifactId>tenant-client</artifactId>
<version>2.4.2019040801</version>
</dependency>サービスインターフェイスの定義と実装
要件に基づいて、com.alipay.xxxx.MockRpc などのサービスインターフェイスを定義します。次に、com.alipay.xxxx.MockRpcImpl などのインターフェイスの実装を提供します。
メソッド定義では、入力パラメーターを Value Object (VO) として定義します。この方法により、後でメソッドのシグネチャを変更することなく、VO にパラメーターを追加できます。
サービスインターフェイスの定義仕様の詳細については、「ビジネスインターフェイスの定義仕様」をご参照ください。
operationType の定義
サービスインターフェイスのメソッドに @OperationType アノテーションを追加して、公開されるサービスの名前を定義します。@OperationType アノテーションには 3 つのメンバーがあります:
value:RPC サービスの一意の識別子。フォーマットはorganization.product_domain.product.sub_product.operationです。name:インターフェイスの名前。desc:インターフェイスの説明。
valueは、ゲートウェイ内でグローバルに一意である必要があります。他のサービスとの競合を避けるために、この値を詳細に定義してください。命名競合が発生すると、サービスが登録できなくなる可能性があります。メンテナンスを容易にするために、
@OperationTypeアノテーションの 3 つのフィールドすべてに値を入力してください。
例:
public interface MockRpc {
@OperationType("com.alipay.mock")
Resp mock(Req s);
@OperationType("com.alipay.mock2")
String mock2(String s);
}
public static class Resp {
private String msg;
private int code;
// getter と setter は省略
}
public static class Req {
private String name;
private int age;
// getter と setter は省略
}次に、ゲートウェイが提供する SPI パッケージを使用して、定義された API サービスを指定されたレジストリに登録します。
MPC API サービスの登録
MPC API サービスを登録するには、次のパラメーターが必要です:
registryUrl:レジストリのアドレス。共有金融テクノロジーレジストリのアドレスはmpcpub.mpaas.cn-hangzhou.aliyuncs.comです。appName:ご利用のアプリケーションの名前。これは API グループ名と同じである必要があります。workspaceId:アプリケーションが配置されている環境のワークスペース ID。projectName:アプリケーションが属するテナントのプロジェクト名。これは API グループのプロジェクト名と同じである必要があります。privateKeyPath:RSA 秘密鍵のクラスパス。このキーは、mpaaschannel への接続を検証するために使用されます。これを/META-INF/config/rsa-mpc-pri-key-{env}.derに配置することを推奨します。ここで、{env}は dev、sit、prod などのさまざまな環境を表します。
公開鍵の設定
対応する環境のコンソールで、左側のナビゲーションウィンドウから [コード管理] > [インターフェイスキー] > [設定] を選択します。ご利用の秘密鍵に対応する RSA 公開鍵を設定します。
次のコマンドは、RSA キーペアを生成する方法を示しています。コンソールで公開鍵を設定します。ご利用のバックエンドアプリケーションの ${privateKeyPath} に秘密鍵ファイルを設定します:
* キーペアの生成方法:
* ### 2048 ビットの RSA 秘密鍵を生成
*
* $ openssl genrsa -out private_key.pem 2048
*
* ### 秘密鍵を PKCS#8 フォーマットに変換 (Java で読み取り可能にするため)
*
* $ openssl pkcs8 -topk8 -inform PEM -outform DER -in private_key.pem -out private_key.der -nocrypt
*
* ### 公開鍵部分を DER フォーマットで出力 (Java で読み取り可能にするため)
*
* $ openssl rsa -in private_key.pem -pubout -outform DER -out public_key.der
*
* ### base64 に変換:
*
* ## 生成された秘密鍵は、バックエンドアプリケーションで設定します
* $ openssl base64 -in private_key.der -out private_key_base64.der
*
* ## 生成された公開鍵は、コンソールのインターフェイスキーで設定します
* $ openssl base64 -in public_key.der -out public_key_base64.der
*
* ### 送信する前に、空白文字と改行を削除することを忘れないでください!Spring メソッド
対応するバンドルの Spring 設定ファイルで、定義されたサービスの Spring Bean を宣言します。
<bean id="mockRpc" class="com.alipay.gateway.spi.mpc.test.MockRpcImpl"/>対応するバンドルの Spring 設定ファイルで、サービスを公開するスターター Bean を宣言します。
MpcServiceStarterインターフェイスは、OperationTypeアノテーションを持つすべての Bean を、mpaaschannel プロトコルを使用して指定されたレジストリに登録します。<bean id="mpcServiceStarter" class="com.alipay.gateway.spi.mpc.MpcServiceStarter"> <property name="registryUrl" value="${registy_url}"/> <property name="appName" value="${app_name}"/> <property name="workspaceId" value="${workspace_id}"/> <property name="projectName" value="${project_name}"/> <property name="privateKeyPath" value="${privatekey_path}"/> </bean>
Spring Boot メソッド
Spring Boot メソッドは、基本的に Spring メソッドと同じです。唯一の違いは、XML 設定ファイルの代わりにアノテーションを使用して登録することです。
アノテーションを使用して、定義されたサービスを Bean として登録します:
@Service public class MockRpcImpl implements MockRpc{ }アノテーションを使用して、サービスを公開するスターターを定義します:
@Configuration public class MpaaschannelDemo { @Bean(name="mpcServiceStarter") public MpcServiceStarter mpcServiceStarter(){ MpcServiceStarter mpcServiceStarter = new MpcServiceStarter(); mpcServiceStarter.setWorkspaceId("${workspace_id}"); mpcServiceStarter.setAppName("${app_name}"); mpcServiceStarter.setRegistryUrl("${registy_url}"); mpcServiceStarter.setProjectName("${project_name}"); mpcServiceStarter.setPrivateKeyPath("${privatekey_path}"); return mpcServiceStarter; } }
MPC ログの構成
トラブルシューティングを容易にするために、MPC 関連のログを設定できます。次の例は、log4j の設定を示しています:
<!-- [MPC Logger] テナントリンク、接続確立と設定情報を記録 -->
<appender name="MPC-TENANT-LINK-APPENDER" class="org.apache.log4j.DailyRollingFileAppender">
<param name="file" value="${log_root}/mpaaschannel/tenant-link.log"/>
<param name="append" value="true"/>
<param name="encoding" value="${file.encoding}"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d [%X{remoteAddr}][%X{uniqueId}] %-5p %c{2} - %m%n"/>
</layout>
</appender>
<!-- [MPC Logger] ストリーム関連のデータ (テナントストリーム <-> コンポーネントストリームのペアを含む) を記録 -->
<appender name="MPC-STREAM-DATA-APPENDER" class="org.apache.log4j.DailyRollingFileAppender">
<param name="file" value="${log_root}/mpaaschannel/stream-data.log"/>
<param name="append" value="true"/>
<param name="encoding" value="${file.encoding}"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d [%X{remoteAddr}][%X{uniqueId}] %-5p %c{2} - %m%n"/>
</layout>
</appender>
<!-- [MPC Logger] テナントログ -->
<logger name="TENANT-LINK-DIGEST" additivity="false">
<level value="INFO" />
<appender-ref ref="MPC-TENANT-LINK-APPENDER" />
<appender-ref ref="ERROR-APPENDER" />
</logger>
<!-- [MPC Logger] コンポーネントログ -->
<logger name="STREAM-DATA-DIGEST" additivity="false">
<level value="INFO" />
<appender-ref ref="MPC-STREAM-DATA-APPENDER" />
<appender-ref ref="ERROR-APPENDER" />
</logger>結果
これらの手順を完了すると、ゲートウェイでいくつかの操作を実行して、API サービスをクライアントに公開できます。詳細については、「API の登録」をご参照ください。