moehajj commented on issue #2205:
URL: https://github.com/apache/camel-k/issues/2205#issuecomment-817895840


   Hi Team, I'm working alongside @viacheslav-fomin-main. I would like to 
provide some context for this issue to help you reproduce if needed.
   
   ## The Proto File
   Our `.proto` file looks something like this (we package it in 
`com.sample.compute:compute-proto:1.0.0-SNAPSHOT`):
   ```
   syntax = "proto3";
   
   package com.sample.compute;
   
   option java_package = "com.sample.compute";
   option java_multiple_files = true;
   
   message ComputeRequest {
     Script script = 1;
     Payload payload = 2;
     map<string, string> context = 3;
     map<string, string> system_context = 4;
   }
   
   message Payload {
     bytes payload = 1;
   }
   
   message Script {
     string type = 1;
     string version = 2;
     string script = 3;
   }
   
   message ComputeResponse {
     Payload payload = 1;
     map<string, string> context = 2;
     map<string, string> system_context = 3;
   }
   
   service ComputeService {
     rpc Compute(ComputeRequest) returns (ComputeResponse);
     rpc ComputeStream(stream ComputeRequest) returns (stream ComputeResponse);
   }
   ```
   
   ## The Java Route
   Our `SampleGrpcCamelRoute.java` route looks like this:
   ```
   package com.sample.compute.service.grpc;
   
   import com.google.protobuf.ByteString;
   import com.sample.compute.ComputeRequest;
   import com.sample.compute.ComputeResponse;
   import com.sample.compute.Payload;
   import org.apache.camel.Message;
   import org.apache.camel.builder.RouteBuilder;
   
   import java.nio.charset.StandardCharsets;
   
   public class SampleGrpcCamelRoute extends RouteBuilder {
   
       @Override
       public void configure() throws Exception {
           
fromF("grpc://localhost:9000/com.sample.compute.ComputeService?synchronous=true")
                   .process(exchange -> {
                       final Message message = exchange.getMessage();
                       final ComputeRequest request = 
message.getBody(ComputeRequest.class);
   
                       final String scriptOutputBody = "Hello World!";
   
                       final Payload responsePayload = Payload.newBuilder()
                               
.setPayload(ByteString.copyFrom(scriptOutputBody.getBytes(StandardCharsets.UTF_8)))
                               .build();
                       final ComputeResponse response = 
ComputeResponse.newBuilder()
                               .setPayload(responsePayload)
                               .build();
   
                       message.setBody(response);
                   });
       }
   }
   ```
   We have verified this route works locally using java unit tests and Apache 
Camel ContextTestSupport `org.apache.camel.ContextTestSupport`.
   
   
   ## Running using `kamel` CLI
   We run the integration using the following command:
   ```
   kamel run --dev \
           -d mvn:com.sample.compute:compute-proto:1.0.0-SNAPSHOT \
           -d mvn:org.apache.camel:camel-grpc:3.9.0 \
           -d mvn:org.apache.camel:camel-componentdsl:3.9.0 \
           SampleGrpcCamelRoute.java
   ```
   Using `kubectl port-forward` on the integration pod we are able to verify 
the grpc route is working using the same tests we had run locally.
   
   We tried a plethora of camel-k  `trait`s including: 
   ```
           --trait container.service-port=9000 \
           --trait container.expose=true \
           --trait knative.enabled=true \
           --trait knative-service.enabled=true \
           --trait 
knative-service.autoscaling-class=kpa.autoscaling.knative.dev \
           --trait knative-service.min-scale=1 \
           --trait knative-service.max-scale=1 \
   ```
   
   Thank you for the support!


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Reply via email to