You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by Carl Nygard <cj...@gmail.com> on 2014/10/07 22:09:43 UTC

TCP bi-directional comm

Hello,

I have an issue that I'm trying to solve in Camel, and I need some ideas on
how to structure the routes and connectors to get things to happen.

We are connecting to a button/light device to send commands to light the
light, while at the same time receiving messages that indicate the button
was pressed.  This is bidirectional communication on a single tcp socket
initiated by the client (camel).  Depending on the device manufacturer, the
messages may require acknowledgement message back to sender for all
messages sent.

The socket connector would need to be able to send messages to light the
device that are triggered by other camel routes, and at the same time be
able to respond to incoming messages from the device and process the
button-press event.  So it seems that the connector needs to be an inbound
connector and an outbound connector at the same time.

To further complicate matters, there's obviously a race condition when each
side simultaneously sends a message and expects an ACK before moving on,
which would need to be managed by the connector(s).  Typically the device
manufacturer expects that it will win every race.

Has anyone solved this sort of problem before?  Can you point me to
examples or give me an idea of what pieces I'm going to have to develop
myself and what components I can use to build the route(s)?

--carl