20.7. 例子
通过 http 的 camel avro producer 示例:
<route> <from uri="direct:start"/> <to uri="avro:http:localhost:{{avroport}}?protocolClassName=org.apache.camel.avro.generated.KeyValueProtocol"/> <to uri="log:avro"/> </route>
在上面的示例中,您需要填写 CamelAvroMessageName
标头。从 2.12 开始,您可以使用以下语法来调用恒定信息:
<route> <from uri="direct:start"/> <to uri="avro:http:localhost:{{avroport}}/put?protocolClassName=org.apache.camel.avro.generated.KeyValueProtocol"/> <to uri="log:avro"/> </route>
使用 camel avro 用户通过 netty 消耗消息的示例:
<route> <from uri="avro:netty:localhost:{{avroport}}?protocolClassName=org.apache.camel.avro.generated.KeyValueProtocol"/> <choice> <when> <el>${in.headers.CamelAvroMessageName == 'put'}</el> <process ref="putProcessor"/> </when> <when> <el>${in.headers.CamelAvroMessageName == 'get'}</el> <process ref="getProcessor"/> </when> </choice> </route>
由于 2.12,您可以设置两个不同的路由来执行相同的任务:
<route> <from uri="avro:netty:localhost:{{avroport}}/put?protocolClassName=org.apache.camel.avro.generated.KeyValueProtocol"> <process ref="putProcessor"/> </route> <route> <from uri="avro:netty:localhost:{{avroport}}/get?protocolClassName=org.apache.camel.avro.generated.KeyValueProtocol&singleParameter=true"/> <process ref="getProcessor"/> </route>
在上面的例子中,get 只使用一个参数,因此使用 singleParameter
,而 getProcessor
将直接接收正文中的 Value 类,而 putProcessor
将收到大小 2,其值为 String key 和 value 值,并以数组内容填充。