[ 
https://issues.apache.org/jira/browse/CAMEL-6575?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Vitalii Tymchyshyn updated CAMEL-6575:
--------------------------------------

    Description: 
Hello.

We've created certain enhancements to camel-avro RPC support we'd like to 
contribute to community.
I will create a pull request against apache/master on github shortly and add 
comment here.

The enhancements are:
1) Support for avro reflection mode. It's plug-and-play now, so if you specify 
protocol class that is not generated, reflection mode will be automatically 
enabled

2) Support for message names in URIs itself, e.g. you can specify 
avro:netty:host:port/message uri for both consumer and producer. Consumer 
dispatching will be done automatically by camel-avro. All mechanisms can be 
used at the same time. For producer header has the preference over URI, for 
consumer header will be set, consumers mapped to message names has precedence, 
consumer without message name (if any) is used as default one.

3) Special support for messages with single parameter - one can specify 
singleParameter=true in consumer URI for messages with single parameter. This 
will make consumer not to wrap parameter in array, so no unwrapping in the 
route itself is needed.

All this things together makes camel-avro very easy to use and efficient RPC 
mechanism for camel. To make an RPC one needs to:
a) Define protocol interface with required messages, e.g.
{code}
public interface MyRPC {
 POJOOp1Response op1(POJOOp1Request request);
 POJOOp2Response op2(POJOOp2Request request);
}
{code}
b) Use uris, like 
avro:netty:host:port/op1&singleParameter=true&protocolClassName=package.MyRPC

P.S. The people who did the enhancement are me (Vitalii Tymchyshyn 
github.com/tivv and Oleksii Kondratyuk github.com/alexrwd)


  was:
Hello.

We've created certain enhancements to camel-avro RPC support we'd like to 
contribute to community.
I will create a pull request against apache/master on github shortly and add 
comment here.

The enhancements are:
1) Support for avro reflection mode. It's plug-and-play now, so if you specify 
protocol class that is not generated, reflection mode will be automatically 
enabled

2) Support for message names in URIs itself, e.g. you can specify 
avro:netty:host:port/message uri for both consumer and producer. Consumer 
dispatching will be done automatically by camel-avro. All mechanisms can be 
used at the same time. For producer header has the preference over URI, for 
consumer header will be set, consumers mapped to message names has precedence, 
consumer without message name (if any) is used as default one.

3) Special support for messages with single parameter - one can specify 
singleParameter=true in consumer URI for messages with single parameter. This 
will make consumer not to wrap parameter in array, so no unwrapping in the 
route itself is needed.

All this things together makes camel-avro very easy to use and efficient RPC 
mechanism for camel. To make an RPC one needs to:
a) Define protocol interface with required messages, e.g.
public interface MyRPC {
 POJOOp1Response op1(POJOOp1Request request);
 POJOOp2Response op2(POJOOp2Request request);
}
b) Use uris, like 
avro:netty:host:port/op1&singleParameter=true&protocolClassName=package.MyRPC

P.S. The people who did the enhancement are me (Vitalii Tymchyshyn 
github.com/tivv and Oleksii Kondratyuk github.com/alexrwd)


    
> Enhancements for camel-avro
> ---------------------------
>
>                 Key: CAMEL-6575
>                 URL: https://issues.apache.org/jira/browse/CAMEL-6575
>             Project: Camel
>          Issue Type: New Feature
>            Reporter: Vitalii Tymchyshyn
>
> Hello.
> We've created certain enhancements to camel-avro RPC support we'd like to 
> contribute to community.
> I will create a pull request against apache/master on github shortly and add 
> comment here.
> The enhancements are:
> 1) Support for avro reflection mode. It's plug-and-play now, so if you 
> specify protocol class that is not generated, reflection mode will be 
> automatically enabled
> 2) Support for message names in URIs itself, e.g. you can specify 
> avro:netty:host:port/message uri for both consumer and producer. Consumer 
> dispatching will be done automatically by camel-avro. All mechanisms can be 
> used at the same time. For producer header has the preference over URI, for 
> consumer header will be set, consumers mapped to message names has 
> precedence, consumer without message name (if any) is used as default one.
> 3) Special support for messages with single parameter - one can specify 
> singleParameter=true in consumer URI for messages with single parameter. This 
> will make consumer not to wrap parameter in array, so no unwrapping in the 
> route itself is needed.
> All this things together makes camel-avro very easy to use and efficient RPC 
> mechanism for camel. To make an RPC one needs to:
> a) Define protocol interface with required messages, e.g.
> {code}
> public interface MyRPC {
>  POJOOp1Response op1(POJOOp1Request request);
>  POJOOp2Response op2(POJOOp2Request request);
> }
> {code}
> b) Use uris, like 
> avro:netty:host:port/op1&singleParameter=true&protocolClassName=package.MyRPC
> P.S. The people who did the enhancement are me (Vitalii Tymchyshyn 
> github.com/tivv and Oleksii Kondratyuk github.com/alexrwd)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to