I now about transferExchange option. That is not what I want. I do not want
to send headers over the wire to remote server, only body. I want headers
accessable after receiving response from server. Just like in http
component.



Claus Ibsen wrote:
> 
> Hi
> 
> If you want to send the payload with both body + headers then you can send
> it as plain exchange using the transferExchange=true option. Its already
> in 1.4
> 
> See the wiki documentation of the component:
> http://activemq.apache.org/camel/mina.html
> 
> And check its unit test:
> https://svn.apache.org/repos/asf/activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaTransferExchangeOptionTest.java
> 
> 
> 
> Med venlig hilsen
>  
> Claus Ibsen
> ......................................
> Silverbullet
> Skovsgårdsvænget 21
> 8362 Hørning
> Tlf. +45 2962 7576
> Web: www.silverbullet.dk
> -----Original Message-----
> From: dkozic [mailto:[EMAIL PROTECTED] 
> Sent: 26. august 2008 08:41
> To: camel-user@activemq.apache.org
> Subject: RE: mina tcp client problem
> 
> 
> Thanks for quick fix. 
> 
> I have another problem with mina component.
> There is no headers in message after mina component. Is it intentional or
> not (Because of InOut MEP)?
> 
> With your fix, that problem will not appear. Here is snippet of code
> (after
> fix) from MinaProducer class
> 
> if (ExchangeHelper.isOutCapable(exchange)) {
>     MinaPayloadHelper.setOut(exchange, handler.getMessage());
> } else {
>     MinaPayloadHelper.setIn(exchange, handler.getMessage());
> }
> In case of setting out message, only body is set.
> In case of setting in message all headers are preserved.
> 
> Is there workaround in Camel 1.4 for this problem or I should switch to
> Camel 1.5?
> Maybe I should try to copy In message to Out message in custom processor
> before mina? Is it good approach?
> 
> Thanks in advance
> 
> 
> 
> 
> Claus Ibsen wrote:
>> 
>> Hi
>> 
>> I have fixed camel-mina to be exchange pattern (MEP) agnostic and thus
>> support your use-case out-of-the-box in Camel 1.5. So at that time you
>> don't need to change the MEP from InOnly to InOut to get the response
>> from
>> mina.
>> 
>> Also the sync option is now default = true. 99% will call a remote socket
>> server and wait for a response. 
>> 
>> CAMEL-847 was the ticket for this change.
>> 
>> Med venlig hilsen
>>  
>> Claus Ibsen
>> ......................................
>> Silverbullet
>> Skovsgårdsvænget 21
>> 8362 Hørning
>> Tlf. +45 2962 7576
>> Web: www.silverbullet.dk
>> 
>> -----Original Message-----
>> From: dkozic [mailto:[EMAIL PROTECTED] 
>> Sent: 25. august 2008 13:08
>> To: camel-user@activemq.apache.org
>> Subject: RE: mina tcp client problem
>> 
>> 
>> It works now. Thanks a lot. What is purpose of ExchangePattern if it can
>> be
>> changed in any moment?
>> 
>> 
>> Claus Ibsen wrote:
>>> 
>>> Hi
>>> 
>>> Ah you must change the exchange pattern to InOut before you send it to
>>> Mina so it can set the response on the out message body.
>>> 
>>> I guess we might need some smarter exchange pattern in Camel. Something
>>> to
>>> improve in Camel 2.0!!!
>>> 
>>> You can change the exchange pattern in Camel in your processor code (eg.
>>> debugProcessor) by casting the exchange to DefaultExchange and call the
>>> setExchangePattern(InOut) to change it from InOnly to InOut
>>> 
>>> I guess you have a bad combination in Camel that hasn't an elegant and
>>> beautiful solution. 
>>> 
>>> 
>>> 
>>> Med venlig hilsen
>>>  
>>> Claus Ibsen
>>> ......................................
>>> Silverbullet
>>> Skovsgårdsvænget 21
>>> 8362 Hørning
>>> Tlf. +45 2962 7576
>>> Web: www.silverbullet.dk
>>> -----Original Message-----
>>> From: dkozic [mailto:[EMAIL PROTECTED] 
>>> Sent: 25. august 2008 12:14
>>> To: camel-user@activemq.apache.org
>>> Subject: RE: mina tcp client problem
>>> 
>>> 
>>> I still need help regarding this problem.
>>> 
>>> I have already tried with sync option, with no results.
>>> 
>>> Here is my last route configuration:
>>> 
>>> from("timer://whcTimer?period=20000&delay=10000")
>>> .setBody(constant("0001134765 C 65405818"))
>>> .processRef("debugProcessor").to("seda:whcLog")
>>> .to("mina:tcp://172.18.3.145:6562?textline=true&minaLogger=true&sync=true")
>>> .processRef("debugProcessor")
>>> .to("seda:whcLog");
>>> 
>>> from("seda:whcLog").to("log:asw.someLogger?level=DEBUG&showHeaders=true");
>>> 
>>> I have switch on tracing and output is following:
>>> 
>>> 2008-08-25 12:06:16,250 [timer://whcTimer?period=20000&delay=10000] INFO 
>>> org.apache.camel.processor.interceptor.TraceInterceptor:88  -
>>> ID-drasko/3530-1219658769328/2-0 -> interceptor1
>>> Interceptor[Delegate(Pipeline[DeadLetterChannel[Delegate(TraceInterceptor[SetBody[
>>> Expression[null]]]),
>>> RecipientList[log:org.apache.camel.DeadLetterChannel?level=error],
>>> RedeliveryPolicy[maximumRedeliveries=6]],
>>> DeadLetterChannel[Delegate(TraceInterceptor[Processor[ref: 
>>> debugProcessor]]),
>>> RecipientList[log:org.apache.camel.DeadLetterChannel?level=error],
>>> RedeliveryPolicy[maximumRedeliveries=6]],
>>> DeadLetterChannel[Delegate(TraceInterceptor[To[seda:whcLog]]),
>>> RecipientList[log:org.apache.camel.DeadLetterChannel?level=error],
>>> RedeliveryPolicy[maximumRedeliveries=6]],
>>> DeadLetterChannel[Delegate(TraceInterceptor[To[mina:tcp://172.18.3.145:6562?textline=true&minaLogger=true&sync=true]]),
>>> RecipientList[log:org.apache.camel.DeadLetterChannel?level=error],
>>> RedeliveryPolicy[maximumRedeliveries=6]],
>>> DeadLetterChannel[Delegate(TraceInterceptor[Processor[ref: 
>>> debugProcessor]]),
>>> RecipientList[log:org.apache.camel.DeadLetterChannel?level=error],
>>> RedeliveryPolicy[maximumRedeliveries=6]],
>>> DeadLetterChannel[Delegate(TraceInterceptor[To[seda:whcLog]]),
>>> RecipientList[log:org.apache.camel.DeadLetterChannel?level=error],
>>> RedeliveryPolicy[maximumRedeliveries=6]]])] InOnly
>>> Properties:{org.apache.camel.timer.name=whcTimer,
>>> org.apache.camel.timer.period=20000, org.apache.camel.timer.time=null}
>>> Headers:{} Body:Message: null
>>> 2008-08-25 12:06:16,296 [timer://whcTimer?period=20000&delay=10000] INFO 
>>> org.apache.camel.processor.interceptor.TraceInterceptor:88  -
>>> ID-drasko/3530-1219658769328/2-0 -> setBody1 SetBody[ Expression[null]]
>>> InOnly Properties:{CamelCauseException=null,
>>> org.apache.camel.timer.name=whcTimer,
>>> org.apache.camel.timer.period=20000,
>>> org.apache.camel.timer.time=null} Headers:{} Body:Message: null
>>> 2008-08-25 12:06:16,296 [timer://whcTimer?period=20000&delay=10000] INFO 
>>> org.apache.camel.processor.interceptor.TraceInterceptor:88  -
>>> ID-drasko/3530-1219658769328/2-0 -> processor1 Processor[ref: 
>>> debugProcessor] InOnly Properties:{CamelCauseException=null,
>>> org.apache.camel.timer.name=whcTimer,
>>> org.apache.camel.timer.period=20000,
>>> org.apache.camel.timer.time=null} Headers:{} Body:0001134765 C 65405818
>>> 2008-08-25 12:06:16,296 [timer://whcTimer?period=20000&delay=10000]
>>> DEBUG
>>> asw.camel.processor.DebugProcessor:15  - inMessage: Message: 0001134765
>>> C
>>> 65405818
>>> 2008-08-25 12:06:16,296 [timer://whcTimer?period=20000&delay=10000]
>>> DEBUG
>>> asw.camel.processor.DebugProcessor:18  - inMessageBody: 0001134765 C
>>> 65405818
>>> 2008-08-25 12:06:16,296 [timer://whcTimer?period=20000&delay=10000] INFO 
>>> org.apache.camel.processor.interceptor.TraceInterceptor:88  -
>>> ID-drasko/3530-1219658769328/2-0 -> to1 To[seda:whcLog] InOnly
>>> Properties:{CamelCauseException=null,
>>> org.apache.camel.timer.name=whcTimer,
>>> org.apache.camel.timer.period=20000, org.apache.camel.timer.time=null}
>>> Headers:{} Body:0001134765 C 65405818
>>> 2008-08-25 12:06:16,296 [timer://whcTimer?period=20000&delay=10000] INFO 
>>> org.apache.camel.processor.interceptor.TraceInterceptor:88  -
>>> ID-drasko/3530-1219658769328/2-0 -> to2
>>> To[mina:tcp://172.18.3.145:6562?textline=true&minaLogger=true&sync=true]
>>> InOnly Properties:{CamelCauseException=null,
>>> org.apache.camel.timer.name=whcTimer,
>>> org.apache.camel.timer.period=20000,
>>> org.apache.camel.timer.time=null} Headers:{} Body:0001134765 C 65405818
>>> 2008-08-25 12:06:16,296 [seda:whcLog thread:1] INFO 
>>> org.apache.camel.processor.interceptor.TraceInterceptor:88  -
>>> ID-drasko/3530-1219658769328/2-0 -> interceptor2
>>> Interceptor[Delegate(DeadLetterChannel[Delegate(TraceInterceptor[To[log:asw.someLogger?level=DEBUG&showHeaders=true]]),
>>> RecipientList[log:org.apache.camel.DeadLetterChannel?level=error],
>>> RedeliveryPolicy[maximumRedeliveries=6]])] InOnly
>>> Properties:{CamelCauseException=null,
>>> org.apache.camel.timer.name=whcTimer,
>>> org.apache.camel.timer.period=20000, org.apache.camel.timer.time=null}
>>> Headers:{} Body:0001134765 C 65405818
>>> 2008-08-25 12:06:16,312 [seda:whcLog thread:1] INFO 
>>> org.apache.camel.processor.interceptor.TraceInterceptor:88  -
>>> ID-drasko/3530-1219658769328/2-0 -> to4
>>> To[log:asw.someLogger?level=DEBUG&showHeaders=true] InOnly
>>> Properties:{CamelCauseException=null,
>>> org.apache.camel.timer.name=whcTimer,
>>> org.apache.camel.timer.period=20000, org.apache.camel.timer.time=null}
>>> Headers:{} Body:0001134765 C 65405818
>>> 2008-08-25 12:06:16,312 [seda:whcLog thread:1] DEBUG asw.someLogger:73 
>>> -
>>> Exchange[Headers:{}, BodyType:String, Body:0001134765 C 65405818]
>>> 2008-08-25 12:06:16,312 [timer://whcTimer?period=20000&delay=10000]
>>> DEBUG
>>> org.apache.camel.component.mina.MinaProducer:83  - Writing body:
>>> 0001134765
>>> C 65405818
>>> 2008-08-25 12:06:16,328 [timer://whcTimer?period=20000&delay=10000] INFO 
>>> org.apache.camel.component.mina.MinaProducer$ResponseHandler:69  -
>>> [/172.18.3.145:6562] WRITE: 0001134765 C 65405818
>>> 2008-08-25 12:06:16,343 [timer://whcTimer?period=20000&delay=10000] INFO 
>>> org.apache.camel.processor.interceptor.TraceInterceptor:88  -
>>> ID-drasko/3530-1219658769328/2-0 -> processor2 Processor[ref: 
>>> debugProcessor] InOnly Properties:{CamelCauseException=null,
>>> org.apache.camel.timer.name=whcTimer,
>>> org.apache.camel.timer.period=20000,
>>> org.apache.camel.timer.time=null} Headers:{} Body:0001134765 C 65405818
>>> 2008-08-25 12:06:16,343 [timer://whcTimer?period=20000&delay=10000]
>>> DEBUG
>>> asw.camel.processor.DebugProcessor:15  - inMessage: Message: 0001134765
>>> C
>>> 65405818
>>> 2008-08-25 12:06:16,343 [timer://whcTimer?period=20000&delay=10000]
>>> DEBUG
>>> asw.camel.processor.DebugProcessor:18  - inMessageBody: 0001134765 C
>>> 65405818
>>> 2008-08-25 12:06:16,343 [timer://whcTimer?period=20000&delay=10000] INFO 
>>> org.apache.camel.processor.interceptor.TraceInterceptor:88  -
>>> ID-drasko/3530-1219658769328/2-0 -> to3 To[seda:whcLog] InOnly
>>> Properties:{CamelCauseException=null,
>>> org.apache.camel.timer.name=whcTimer,
>>> org.apache.camel.timer.period=20000, org.apache.camel.timer.time=null}
>>> Headers:{} Body:0001134765 C 65405818
>>> 2008-08-25 12:06:16,343 [seda:whcLog thread:1] INFO 
>>> org.apache.camel.processor.interceptor.TraceInterceptor:88  -
>>> ID-drasko/3530-1219658769328/2-0 -> interceptor2
>>> Interceptor[Delegate(DeadLetterChannel[Delegate(TraceInterceptor[To[log:asw.someLogger?level=DEBUG&showHeaders=true]]),
>>> RecipientList[log:org.apache.camel.DeadLetterChannel?level=error],
>>> RedeliveryPolicy[maximumRedeliveries=6]])] InOnly
>>> Properties:{CamelCauseException=null,
>>> org.apache.camel.timer.name=whcTimer,
>>> org.apache.camel.timer.period=20000, org.apache.camel.timer.time=null}
>>> Headers:{} Body:0001134765 C 65405818
>>> 2008-08-25 12:06:16,343 [seda:whcLog thread:1] INFO 
>>> org.apache.camel.processor.interceptor.TraceInterceptor:88  -
>>> ID-drasko/3530-1219658769328/2-0 -> to4
>>> To[log:asw.someLogger?level=DEBUG&showHeaders=true] InOnly
>>> Properties:{CamelCauseException=null,
>>> org.apache.camel.timer.name=whcTimer,
>>> org.apache.camel.timer.period=20000, org.apache.camel.timer.time=null}
>>> Headers:{} Body:0001134765 C 65405818
>>> 2008-08-25 12:06:16,343 [seda:whcLog thread:1] DEBUG asw.someLogger:73 
>>> -
>>> Exchange[Headers:{}, BodyType:String, Body:0001134765 C 65405818]
>>> 2008-08-25 12:06:16,343 [AnonymousIoService-2] INFO 
>>> org.apache.camel.component.mina.MinaProducer$ResponseHandler:69  -
>>> [/172.18.3.145:6562] SENT: 0001134765 C 65405818
>>> 2008-08-25 12:06:16,375 [AnonymousIoService-3] INFO 
>>> org.apache.camel.component.mina.MinaProducer$ResponseHandler:69  -
>>> [/172.18.3.145:6562] RECEIVED: 00   14765 
>>> 2008-08-25 12:06:16,390 [AnonymousIoService-3] DEBUG
>>> org.apache.camel.component.mina.MinaProducer:166  - Message received: 00  
>>> 14765 
>>> 2008-08-25 12:06:16,687 [AnonymousIoService-4] INFO 
>>> org.apache.camel.component.mina.MinaProducer$ResponseHandler:69  -
>>> [/172.18.3.145:6562] RECEIVED: 00  904765 ID: 65405818 ERROR: 300021 -
>>> Subscriber record was not created: subscriber already exists
>>> 2008-08-25 12:06:16,687 [AnonymousIoService-4] DEBUG
>>> org.apache.camel.component.mina.MinaProducer:166  - Message received: 00 
>>> 904765 ID: 65405818 ERROR: 300021 - Subscriber record was not created:
>>> subscriber already exists
>>> 
>>> As you can see, remote server is contacted and correct response is
>>> received,
>>> but that response is not in message body after mina component.
>>> The message is InOnly (I suppose because of timer component). That is
>>> the
>>> difference. Example in documentation is InOut (I think so).
>>> 
>>> As I said before, I am expecting behavior similar to http component.
>>> 
>>> Please help.
>>> 
>>> 
>>> 
>>> 
>>> Claus Ibsen wrote:
>>>> 
>>>> Hi
>>>> 
>>>> You need to use the sync=true option for the mina component to instruct
>>>> it
>>>> to be in synchronous mode and wait for a response.
>>>> 
>>>> See the mina documentation and read about this option.
>>>> http://activemq.apache.org/camel/mina.html
>>>> 
>>>> You use-case is documented there with a sample using textline and
>>>> sync=true.
>>>> 
>>>> 
>>>> Med venlig hilsen
>>>>  
>>>> Claus Ibsen
>>>> ......................................
>>>> Silverbullet
>>>> Skovsgårdsvænget 21
>>>> 8362 Hørning
>>>> Tlf. +45 2962 7576
>>>> Web: www.silverbullet.dk
>>>> 
>>>> -----Original Message-----
>>>> From: dkozic [mailto:[EMAIL PROTECTED] 
>>>> Sent: 22. august 2008 13:51
>>>> To: camel-user@activemq.apache.org
>>>> Subject: mina tcp client problem
>>>> 
>>>> 
>>>> Hi,
>>>> 
>>>> I would like to make route that will send text line to remote tcp
>>>> host:port,
>>>> read response and proceed with that response in body further in route.
>>>> I
>>>> have already make something similar with 
>>>> 
>>>> I tried with following route:
>>>> 
>>>> from("timer://whcTimer?period=20000&delay=10000")
>>>> .setBody(constant("0001134765 C 65405818"))
>>>> .processRef("systemOutProcessor").processRef("debugProcessor")
>>>> .to("seda:whcLog")
>>>> .to("mina:tcp://172.18.3.145:6562?textline=true&minaLogger=true")
>>>> .processRef("systemOutProcessor")
>>>> .processRef("debugProcessor").to("seda:whcLog");
>>>> 
>>>> from("seda:whcLog").to("log:asw.someLogger?level=DEBUG&showHeaders=true");
>>>> 
>>>> The log output is:
>>>> 
>>>> 2008-08-22 13:32:57,640 [timer://whcTimer?period=20000&delay=10000]
>>>> DEBUG
>>>> asw.camel.processor.DebugProcessor:15  - inMessage: Message: 0001134765
>>>> C
>>>> 65405818
>>>> 2008-08-22 13:32:57,640 [timer://whcTimer?period=20000&delay=10000]
>>>> DEBUG
>>>> asw.camel.processor.DebugProcessor:18  - inMessageBody: 0001134765 C
>>>> 65405818
>>>> 2008-08-22 13:32:57,640 [seda:whcLog thread:1] DEBUG asw.someLogger:73 
>>>> -
>>>> Exchange[Headers:{}, BodyType:String, Body:0001134765 C 65405818]
>>>> 2008-08-22 13:32:57,656 [timer://whcTimer?period=20000&delay=10000]
>>>> INFO 
>>>> org.apache.camel.component.mina.MinaProducer$ResponseHandler:69  -
>>>> [/172.18.3.145:6562] WRITE: 0001134765 C 65405818
>>>> Entered SystemOutProcessor.
>>>> 2008-08-22 13:32:57,671 [timer://whcTimer?period=20000&delay=10000]
>>>> DEBUG
>>>> asw.camel.processor.DebugProcessor:15  - inMessage: Message: 0001134765
>>>> C
>>>> 65405818
>>>> 2008-08-22 13:32:57,671 [timer://whcTimer?period=20000&delay=10000]
>>>> DEBUG
>>>> asw.camel.processor.DebugProcessor:18  - inMessageBody: 0001134765 C
>>>> 65405818
>>>> 2008-08-22 13:32:57,671 [seda:whcLog thread:1] DEBUG asw.someLogger:73 
>>>> -
>>>> Exchange[Headers:{}, BodyType:String, Body:0001134765 C 65405818]
>>>> 2008-08-22 13:32:57,671 [AnonymousIoService-2] INFO 
>>>> org.apache.camel.component.mina.MinaProducer$ResponseHandler:69  -
>>>> [/172.18.3.145:6562] SENT: 0001134765 C 65405818
>>>> 2008-08-22 13:32:57,718 [AnonymousIoService-3] INFO 
>>>> org.apache.camel.component.mina.MinaProducer$ResponseHandler:69  -
>>>> [/172.18.3.145:6562] RECEIVED: 00  904765 ID: 65405818 ERROR: 300021 -
>>>> Subscriber record was not created: subscriber already exists
>>>> 
>>>> From the log you can see that mina does tcp send and receive data. But,
>>>> after mina the in message body is same as before. 
>>>> 
>>>> How to access response from remote server?
>>>> As I said, I expected behavior like in http component. I have tried
>>>> with
>>>> sync = "true" with no success.
>>>> 
>>>> Platform: Camel 1.4, jdk1.5.0_10, Eclipse 3.3, Tomcat 5.5.17, Windows
>>>> XP
>>>> SP1
>>>> 
>>>> Thanks in advance
>>>> -- 
>>>> View this message in context:
>>>> http://www.nabble.com/mina-tcp-client-problem-tp19105767s22882p19105767.html
>>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>>> 
>>>> 
>>>> 
>>> 
>>> -- 
>>> View this message in context:
>>> http://www.nabble.com/mina-tcp-client-problem-tp19105767s22882p19141128.html
>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>> 
>>> 
>>> 
>> 
>> -- 
>> View this message in context:
>> http://www.nabble.com/mina-tcp-client-problem-tp19105767s22882p19141811.html
>> Sent from the Camel - Users mailing list archive at Nabble.com.
>> 
>> 
>> 
> 
> -- 
> View this message in context:
> http://www.nabble.com/mina-tcp-client-problem-tp19105767s22882p19156617.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/mina-tcp-client-problem-tp19105767s22882p19158051.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to