There is a fromF and toF which has built-in String.format which can makes the DSL a bit nicer to read.
On Wed, Aug 31, 2016 at 4:32 PM, Steve Huston <shus...@riverace.com> wrote: > I'm not an expert on the camel you show, but try changing: > from(String.format("netty4:udp://localhost:%d?sync=false&textline=true", > > to > > from(String.format("netty4:udp://0.0.0.0:%d?sync=false&textline=true", > >> -----Original Message----- >> From: Steve973 [mailto:steve...@gmail.com] >> Sent: Wednesday, August 31, 2016 10:29 AM >> To: users@camel.apache.org >> Subject: Camel send/receive UDP with Netty4 >> >> Hello, All. I am trying to create an example where I can receive UDP packets >> with the Netty4 component, but it isn't working. I'm sending UDP packets >> with a DatagramSocket to localhost, and I have a camel route consuming >> from netty4:udp//localhost on the port the DatagramSocket sent to. Here's >> the code: >> >> public class UdpWithCamelService implements BundleActivator { >> private static final Logger LOGGER = >> LoggerFactory.getLogger(UdpWithCamelService.class); >> public static final int SERVER_PORT = 22222; >> public static final int RECEIVER_PORT = 22223; >> private OsgiDefaultCamelContext camelContext; >> private RouteBuilder routeBuilder; >> private ScheduledExecutorService scheduler; >> private UdpSender sender; >> >> public UdpWithCamelService() throws Exception { >> scheduler = Executors.newSingleThreadScheduledExecutor(); >> sender = new UdpSender(); >> } >> >> @Override >> public void start(BundleContext context) throws Exception { >> camelContext = new OsgiDefaultCamelContext(context); >> camelContext.start(); >> routeBuilder = new CamelUdpReceiverRouteBuilder(); >> camelContext.addRoutes(routeBuilder); >> final Runnable senderTask = () -> { >> try { >> sender.sendTimestamp(); >> LOGGER.warn("Sent timestamp via UDP"); >> } catch (Exception e) { >> LOGGER.error("Problem sending timestamp via UDP", e); >> } >> }; >> scheduler.scheduleAtFixedRate(senderTask, 1, 1, TimeUnit.SECONDS); >> } >> >> @Override >> public void stop(BundleContext context) throws Exception { >> scheduler.shutdown(); >> sender.stop(); >> >> camelContext.removeRouteDefinitions(routeBuilder.getRouteCollection().g >> etRoutes()); >> camelContext = null; >> } >> } >> >> public class UdpSender { >> private final DatagramSocket socket; >> >> public UdpSender() throws Exception { >> socket = new DatagramSocket(UdpWithCamelService.SERVER_PORT); >> } >> >> public void stop() { >> socket.disconnect(); >> socket.close(); >> } >> >> public void sendTimestamp() throws Exception { >> String timestamp = String.valueOf(System.currentTimeMillis()); >> socket.send( >> new DatagramPacket( >> timestamp.getBytes(), timestamp.getBytes().length, >> InetAddress.getLocalHost(), UdpWithCamelService.RECEIVER_PORT >> ) >> ); >> } >> } >> >> public class CamelUdpReceiverRouteBuilder extends RouteBuilder { >> private static final Logger LOGGER = >> LoggerFactory.getLogger(CamelUdpReceiverRouteBuilder.class); >> >> @Override >> public void configure() throws Exception { >> >> from(String.format("netty4:udp://localhost:%d?sync=false&textline=true", >> UdpWithCamelService.RECEIVER_PORT)) >> .process(exchange -> { >> String body = exchange.getIn().getBody(String.class); >> LOGGER.warn("UDP Packet Received: " + body); >> }); >> } >> } >> >> Thanks in advance, >> >> Steve -- Claus Ibsen ----------------- http://davsclaus.com @davsclaus Camel in Action 2: https://www.manning.com/ibsen2