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

Claus Ibsen resolved CAMEL-10051.
---------------------------------
    Resolution: Fixed
      Assignee: Claus Ibsen

Thanks for the PR

> netty4 reuseChannel not working as expected
> -------------------------------------------
>
>                 Key: CAMEL-10051
>                 URL: https://issues.apache.org/jira/browse/CAMEL-10051
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-netty4
>    Affects Versions: 2.17.1
>         Environment: Linux 4.6.1-1-default (OpenSuse Tumbleweed)
> openjdk version "1.8.0_77"
> OpenJDK Runtime Environment (build 1.8.0_77-b03)
> OpenJDK 64-Bit Server VM (build 25.77-b03, mixed mode)
>            Reporter: Grigoris Grigoriadis
>            Assignee: Claus Ibsen
>            Priority: Minor
>             Fix For: 2.17.2, 2.18.0
>
>
> NettyProducer returns the channel to the pool every time a message is sent 
> when the reuseChannel is set to true. It should instead return the channel to 
> the pool only if the exchange is completed, so that other exchanges will not 
> use the same channel.
> I have the following problem:
> I need to send messages to a legacy tcp server through a REST server.
> The tcp server requires messages from one connection to be send in a specific 
> order, for example in order to send COMMAND1 I have to first send PRE1 and 
> PRE2 and then COMMAND1. The component is set to reuseChannel=true and be 
> sync=true and i have the following exchange:
> {code}
> from("direct:command1")
>     .setBody(constant("PRE1"))
>     .to(nettyEndpoint)
>     .setBody(constant("PRE2"))
>     .to(nettyEndpoint)
>     .setBody(constant("COMMAND1"))
>     .to(nettyEndpoint);
> {code}
> The problem is that the NettyProducer returns the channel to the pool every 
> time i send a message. So if concurrent requests are sent to the REST server 
> things get messy. 
> NettyProducer supports this behavior, if the reuseChannel is set to true the 
> producer adds an onCompletion listener on the exchange that returns the 
> channel to the pool. The problem is that it also sets the callback of the 
> NettyCamelState to a NettyProducerCallback which runs every time a message is 
> send by the ClientChannelHandler and returns the channel to the pool.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to