Hi, Alex.  Thank you you for your help.

I had read all of those pages (amongst the million or so I scanned...) but your 
comment made it clearer as to what's possibly going on.


As it turned out, earlier today I accidentally stumbled upon a hackish solution 
(think: Infinite Monkey Theorem) which fixed my Netty4/UDP write problems. 


I didn't have to use any encoders/decoders. (And OMG, that was a Dante-esque 
trip through Hell ... no offense, Claus; I love Camel).


I just had to do this one transform() (see below) ... which, I'm still not sure 
what's going on, as the bean's method is simply returning the passed in JSON 
string as a String ... and that was all that was needed.  I guess the method is 
setting something on the Exchange's OutBody (?) that is making everything 
kosher for Netty?


Of course, a String is serializable, but why couldn't I just go directly from 
the endpoint (which is already returning a string representing a JSON array) to 
Netty?


Anyway, here's the full text of my Server's route builder, along with the hack.


I would love to hear how this fixed my route!


Thank you again.


----------------------------------------


@Component
public class Route extends RouteBuilder
{
@Override
public void configure () throws Exception
{
restConfiguration()
.host("localhost").port(8080)
.bindingMode(RestBindingMode.json);

from("timer:autos?period={{timer.period}}")
.streamCaching()
.to("rest:get:auto/list")
.to("direct:udp");

from("direct:udp")
.log("*** BEFORE write to UDP: ${body}")
.transform().method("myBean", "foo") // XXX: this one line hack fixed it
.to("netty4:udp://localhost:40000?udpConnectionlessSending=true&sync=false")
.log("*** AFTER write to UDP: ${body}");
}

@Component("myBean")
public class Encoder  
{
public String foo (String val) {
return val;
}
}
}


----------------------------------------


> On September 14, 2018 at 1:23 PM Alex Dettinger wrote:
> 
> 
>     Hi Ron,
> 
>     By default, camel-netty4 includes default codecs based on java
>     serialization. So, it could be that your payload is NOT Serializable.
>     You would then need to configure codecs matching your case.
> 
>     You may find below links of interest:
>     
> https://github.com/apache/camel/blob/master/components/camel-netty4/src/main/docs/netty4-component.adoc#using-multiple-codecs
>     
> https://github.com/apache/camel/blob/master/components/camel-netty4/src/test/resources/org/apache/camel/component/netty4/multiple-codecs.xml
>     
> https://github.com/apache/camel/blob/master/components/camel-ganglia/src/test/java/org/apache/camel/component/ganglia/GangliaProtocolV31CamelTest.java#L214-L257
> 
>     Hope this help,
>     Alex
> 
>     On Fri, Sep 14, 2018 at 12:26 AM Ron Cecchini
>     wrote:
> 
>         > > I'll try a shorter version of my question:
> > 
> > 
> >         Why does this work:
> > 
> > 
> >         .to("mina2:udp://localhost:40000?sync=false")
> > 
> >         ...
> > 
> >         from("mina2:udp://localhost:40000?sync=false")
> > 
> > 
> >         and this doesn't work:
> > 
> > 
> >         .to("netty4:udp://localhost:40000?sync=false")
> > 
> >         ...
> > 
> >         from("netty4:udp://localhost:40000?sync=false")
> > 
> > 
> >         In particular, the netty4:udp *write* fails.
> > 
> > 
> >         Thanks.
> > 
> > 
> >         p.s. I found something about using the 'encoder/decoder' params. 
> > But I
> >         don't see anything in the docs or book about it being necessary. Is 
> > it
> >         required? All I'm trying to do is write some JSON I got from a Rest 
> > call.
> > 
> >     > 

Reply via email to