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.