ダボのいくつかの一般的な使用スキル

創造し続け、成長を加速!「ナゲッツデイリー新プラン・10月アップデートチャレンジ」参加3日目、イベント詳細はこちら

ダボ性能試験

テストを通じて、dubbo のインターフェイス パフォーマンスは約 9k -1w であると最初に判断できます。

複数のレジストリを構成する Zk

プロパティ ファイルの設定アドレス:

#Zookeeper 地址
#单注册中心
#dubbo.registry.address=zookeeper://127.0.0.1:2181
#多注册中心
dubbo.registries.orderZK.address=zookeeper://127.0.0.1:2181
dubbo.registries.userZK.address=zookeeper://127.0.0.1:2181
复制代码

サービスプロバイダー:

@DubboService(registry = "orderZK")
复制代码

サービス利用者:

@DubboReference(check = false, registry = "orderZK")
private OrderService orderService;
复制代码

起動時に確認

起動時に依存サービスが利用可能かどうかを確認する

デフォルトでは、Dubbo は起動時に依存サービスが利用可能かどうかをチェックします. 利用できない場合は、例外をスローして、Spring の初期化が完了しないようにするため、オンラインになったときに問題を早期に検出できます. デフォルトの check="true "。

The check can be off by check="false". たとえば、テスト時に、一部のサービスが気にしないか、循環依存関係があり、一方が最初に開始する必要があります。

また、Spring コンテナが遅延ロードされている場合、または API プログラミングによるサービスの参照が遅れている場合は、check をオフにしてください。そうしないと、サービスが一時的に利用できない場合に例外がスローされ、null 参照が取得されます。 ="false" の場合、常にサービスが復旧したときに自動的に接続できる参照を返します。
使用例:

@DubboReference(check = false)
private OrderService orderService;
复制代码

追加せず、サービスが開始されていない場合、呼び出し元サービスの開始に失敗します。サービスを開始できませんでした。次のように:

画像.png

パラメータの検証

パラメータ検証機能はJSR303に基づいて実装されており  、ユーザは JSR303 標準の検証アノテーションを識別し、フィルタを宣言するだけで検証を実現できます。

まず、依存関係を追加します

<dependency>
  <groupId>javax.validation</groupId>
  <artifactId>validation-api</artifactId>
  <version>1.0.0.GA</version>
</dependency>
<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-validator</artifactId>
  <version>4.2.0.Final</version>
</dependency>
<dependency>
  <groupId>org.glassfish</groupId>
  <artifactId>javax.el</artifactId>
  <version>3.0.1-b11</version>
</dependency>
复制代码

DTO オブジェクトはパラメーターの制限を増やし、空にできない単純な userId を追加します

@Data
public class QueryOrderDto implements Serializable {

    @NotNull(message = "userId is not null")
    private String userId;

    private String shopId;

    private String goodsId;
}
复制代码

インターフェースアドレス:

public interface OrderService {

    String createOrder(CreateOrderDto createOrderDto);

    @interface QueryOrder{}
    List<OrderDto> queryOrder(QueryOrderDto queryOrderDto);
}
复制代码

インターフェースの実装:

画像.png

効果を確認します。

javax.validation.ValidationException: Failed to validate service: com.ssm.rpc.service.OrderService, method: queryOrder, cause: [ConstraintViolationImpl{interpolatedMessage='userId is not null', propertyPath=userId, rootBeanClass=class com.ssm.rpc.dto.QueryOrderDto, messageTemplate='userId is not null'}]

	at org.apache.dubbo.validation.filter.ValidationFilter.invoke(ValidationFilter.java:96)
	at org.apache.dubbo.rpc.protocol.FilterNode.invoke(FilterNode.java:61)
	at org.apache.dubbo.rpc.protocol.dubbo.filter.TraceFilter.invoke(TraceFilter.java:77)
	at  省略更多。。。
复制代码

参考資料

おすすめ

転載: juejin.im/post/7150314357262385182