我有这样的AVRO协议:
{
"namespace": "org.apache.camel.avro.generated",
"protocol": "KeyValueProtocol",
"types": [
{
"name": "Key", "type": "record",
"fields": [
{ "name": "key", "type": "string"}
]
},
{
"name": "Value", "type": "record",
"fields": [
{ "name": "value", "type": "string"}
]
}
],
"messages": {
"put": {
"request": [{"name": "key", "type": "Key"}, {"name": "value", "type": "Value"} ],
"response": "null"
},
"get": {
"request": [{"name": "key", "type": "Key"}],
"response": "Value"
}
}
}
骆驼路线:
import org.apache.camel.builder.RouteBuilder;
import org.springframework.stereotype.Component;
@Component public class Computations extends RouteBuilder {
@Override
public void configure() throws Exception {
from("avro:http:localhost:12345?protocol=KeyValueProtocol")
.process(exchange->{
System.out.println(exchange);
})
.to("log:foo")
.end();
} }
在编译过程中我得到错误:
[错误] 无法执行目标 org.apache.avro:avro-maven-plugin:1.8.2:schema (default( on project 交易者簿-mt-通用计算:目标的执行默认值 org.apache.avro:avro-maven-plugin:1.8.2:schema failed: no type: {"namespace":"org.apache.camel.avro.generated","protocol":"KeyValueProtocol","types":[{"name":"Key","type":"record","fields":[{"name":"key","type":"string"}]},{"name":"Value","type":"record","fields":[{"name":"value","type":"string"}]}],"messages":{"put":{"request":[{"name":"key","type":"Key"},{"name":"value","type":"Value"}],"response":"null"},"get":{"request":[{"name":"key","type":"Key"}],"response":"Value"}}} -> [帮助 1]
依赖:
[信息] +- org.apache.camel:camel-core:jar:2.18.5:编译
[信息] +- org.apache.avro:avro:jar:1.8.2:编译
有什么建议吗?
就我而言,唯一的问题是我的文件扩展名错误。协议不能位于扩展名为".AVSC'
'。AVPR"和".avdl' 在 maven 插件中工作正常(罚款 =='编译期间没有错误'(
看起来此扩展的更改可以通过插件忽略此数据。