346.4. Thrift 方法参数映射
调用过程中的参数必须作为消息正文中的对象列表传递。原语从动态上的对象转换。为了正确找到对应的方法,无论值如何,必须传输所有类型。请参阅以下 exmaple,如何将不同的参数传递给带有 Camel 正文的方法
List requestBody = new ArrayList(); requestBody.add((boolean)true); requestBody.add((byte)THRIFT_TEST_NUM1); requestBody.add((short)THRIFT_TEST_NUM1); requestBody.add((int)THRIFT_TEST_NUM1); requestBody.add((long)THRIFT_TEST_NUM1); requestBody.add((double)THRIFT_TEST_NUM1); requestBody.add("empty"); // String parameter requestBody.add(ByteBuffer.allocate(10)); // binary parameter requestBody.add(new Work(THRIFT_TEST_NUM1, THRIFT_TEST_NUM2, Operation.MULTIPLY)); // Struct parameter requestBody.add(new ArrayList<Integer>()); // list paramater requestBody.add(new HashSet<String>()); // set parameter requestBody.add(new HashMap<String, Long>()); // map parameter Object responseBody = template.requestBody("direct:thrift-alltypes", requestBody);
服务使用者中的传入参数也会作为对象列表传递给消息正文。