|
@@ -0,0 +1,49 @@
|
|
|
|
+package com.tzld.piaoquan.recommend.feature.client;
|
|
|
|
+
|
|
|
|
+import com.tzld.piaoquan.recommend.feature.model.feature.FeatureKeyProto;
|
|
|
|
+import com.tzld.piaoquan.recommend.feature.model.feature.FeatureV2ServiceGrpc;
|
|
|
|
+import com.tzld.piaoquan.recommend.feature.model.feature.MultiGetFeatureRequest;
|
|
|
|
+import com.tzld.piaoquan.recommend.feature.model.feature.MultiGetFeatureResponse;
|
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
|
+import net.devh.boot.grpc.client.inject.GrpcClient;
|
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
|
+
|
|
|
|
+import java.util.Collections;
|
|
|
|
+import java.util.List;
|
|
|
|
+import java.util.Map;
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * @author dyp
|
|
|
|
+ */
|
|
|
|
+@Component
|
|
|
|
+@Slf4j
|
|
|
|
+public class FeatureV2Client {
|
|
|
|
+ @GrpcClient("recommend-feature")
|
|
|
|
+ private FeatureV2ServiceGrpc.FeatureV2ServiceBlockingStub client;
|
|
|
|
+
|
|
|
|
+ public Map<String, String> multiGetFeature(List<FeatureKeyProto> protos) {
|
|
|
|
+ if (CollectionUtils.isEmpty(protos)) {
|
|
|
|
+ return Collections.emptyMap();
|
|
|
|
+ }
|
|
|
|
+ MultiGetFeatureRequest request = MultiGetFeatureRequest.newBuilder()
|
|
|
|
+ .addAllFeatureKey(protos)
|
|
|
|
+ .build();
|
|
|
|
+ MultiGetFeatureResponse response = client.multiGetFeature(request);
|
|
|
|
+ if (response == null || !response.hasResult()) {
|
|
|
|
+ log.info("multiGetFeature grpc error");
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+ if (response.getResult().getCode() != 1) {
|
|
|
|
+ log.info("multiGetFeature grpc code={}, msg={}", response.getResult().getCode(),
|
|
|
|
+ response.getResult().getMessage());
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+ if (response.getFeatureCount() == 0) {
|
|
|
|
+ log.info("multiGetFeature no feature");
|
|
|
|
+ return Collections.emptyMap();
|
|
|
|
+ }
|
|
|
|
+ return response.getFeatureMap();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+}
|