You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@servicemix.apache.org by gnanda <gi...@phaseforward.com> on 2010/04/23 20:45:56 UTC

smx:camel: receiving http response

Hi all,
I am using camel to read a message from a Q sending to a HTTP
my route is as below
 from("jmstx:queue:spq2").bean(myBean,"setLocationUrI")
.recipientList(header(HttpProducer.HTTP_URI));

I need to recive response code from the above http URI.
I need to make sure I receive 200 or 202 to declare as a success call. How
would I receive the response code ?
Do I need to make the mep as in-out while sending exchange to external web
service thru http endpoint to get the return code?

Please suggest

-- 
View this message in context: http://old.nabble.com/smx%3Acamel%3A-receiving-http-response-tp28345025p28345025.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.


Re: smx:camel: receiving http response

Posted by gnanda <gi...@phaseforward.com>.
Thank you very much. It worked. I got the http response printed in my log
file 


Gert Vanthienen wrote:
> 
> L.S.,
> 
> I think you would have to work with the 'in' message in your bean
> processor.  Because the bean is in a pipeline, it will receive the
> output from the previous processing step in the 'in' message rather
> than in the 'out' message.
> 
> Regards,
> 
> Gert Vanthienen
> ------------------------
> Open Source SOA: http://fusesource.com
> Blog: http://gertvanthienen.blogspot.com/
> 
> 
> 
> On 26 April 2010 18:48, gnanda <gi...@phaseforward.com> wrote:
>>
>> I tried to log response code by adding a bean class to my flow
>> from("jmstx:queue:spq2").bean(myBean,"setLocationUrI")
>> .recipientList(header(HttpProducer.HTTP_URI)).bean(myBean,"printResponse");
>> in the printResponse() method I have below code
>>
>> log.info("MyBeanProcessor - Calling printResponse");
>>                log.info("MyBeanProcessor -exchange.isFailed():" +
>> exchange.isFailed());
>>                Message out = exchange.getOut(); // giving
>> nullpointerexception
>>                Object val =
>> out.getHeader(HttpProducer.HTTP_RESPONSE_CODE);
>>                if (val != null) {
>>                        log.info("MyBeanProcessor -val NOT null");
>>                } else {
>>                        log.info("MyBeanProcessor -val null");
>>                }
>>
>> it is printing "val null"
>> How would I recieve the resaponse code from http call? Do I need create
>> an
>> interceptor code? Please suggest. Any sample will be very helpful
>>
>>
>>
>> gnanda wrote:
>>>
>>> Thanks for the reply. In my scenario, the call to http is a an async
>>> call
>>> where the external webservice does not return any reply back. But it
>>> would
>>> just return me the status code whether accepted or not (200). I think I
>>> need to write an interceptor code for this, but not sure how to write it
>>> Any sample code or document will be very helpful
>>>
>>>
>>> Claus Ibsen-2 wrote:
>>>>
>>>> On Fri, Apr 23, 2010 at 8:45 PM, gnanda
>>>> <gi...@phaseforward.com> wrote:
>>>>>
>>>>> Hi all,
>>>>> I am using camel to read a message from a Q sending to a HTTP
>>>>> my route is as below
>>>>>  from("jmstx:queue:spq2").bean(myBean,"setLocationUrI")
>>>>> .recipientList(header(HttpProducer.HTTP_URI));
>>>>>
>>>>> I need to recive response code from the above http URI.
>>>>> I need to make sure I receive 200 or 202 to declare as a success call.
>>>>> How
>>>>> would I receive the response code ?
>>>>> Do I need to make the mep as in-out while sending exchange to external
>>>>> web
>>>>> service thru http endpoint to get the return code?
>>>>>
>>>>
>>>> Since you only send to 1 endpoint in RecipientList, then Camel will
>>>> return the last exchange as reply.
>>>>
>>>> So simply just continue routing after the recipient list, where you
>>>> can check for the 200/202 codes.
>>>>
>>>> If you send to multiple endpoints in recipient list you can use an
>>>> AggregationStrategy to merge the results together.
>>>>
>>>>
>>>>> Please suggest
>>>>>
>>>>> --
>>>>> View this message in context:
>>>>> http://old.nabble.com/smx%3Acamel%3A-receiving-http-response-tp28345025p28345025.html
>>>>> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Claus Ibsen
>>>> Apache Camel Committer
>>>>
>>>> Author of Camel in Action: http://www.manning.com/ibsen/
>>>> Open Source Integration: http://fusesource.com
>>>> Blog: http://davsclaus.blogspot.com/
>>>> Twitter: http://twitter.com/davsclaus
>>>>
>>>>
>>>
>>>
>>
>> --
>> View this message in context:
>> http://old.nabble.com/smx%3Acamel%3A-receiving-http-response-tp28345025p28367318.html
>> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>>
>>
> 
> 
> -----
> ---
> Gert Vanthienen
> http://gertvanthienen.blogspot.com
> 

-- 
View this message in context: http://old.nabble.com/smx%3Acamel%3A-receiving-http-response-tp28345025p28367595.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.


Re: smx:camel: receiving http response

Posted by Gert Vanthienen <ge...@gmail.com>.
L.S.,

I think you would have to work with the 'in' message in your bean
processor.  Because the bean is in a pipeline, it will receive the
output from the previous processing step in the 'in' message rather
than in the 'out' message.

Regards,

Gert Vanthienen
------------------------
Open Source SOA: http://fusesource.com
Blog: http://gertvanthienen.blogspot.com/



On 26 April 2010 18:48, gnanda <gi...@phaseforward.com> wrote:
>
> I tried to log response code by adding a bean class to my flow
> from("jmstx:queue:spq2").bean(myBean,"setLocationUrI")
> .recipientList(header(HttpProducer.HTTP_URI)).bean(myBean,"printResponse");
> in the printResponse() method I have below code
>
> log.info("MyBeanProcessor - Calling printResponse");
>                log.info("MyBeanProcessor -exchange.isFailed():" + exchange.isFailed());
>                Message out = exchange.getOut(); // giving nullpointerexception
>                Object val = out.getHeader(HttpProducer.HTTP_RESPONSE_CODE);
>                if (val != null) {
>                        log.info("MyBeanProcessor -val NOT null");
>                } else {
>                        log.info("MyBeanProcessor -val null");
>                }
>
> it is printing "val null"
> How would I recieve the resaponse code from http call? Do I need create an
> interceptor code? Please suggest. Any sample will be very helpful
>
>
>
> gnanda wrote:
>>
>> Thanks for the reply. In my scenario, the call to http is a an async call
>> where the external webservice does not return any reply back. But it would
>> just return me the status code whether accepted or not (200). I think I
>> need to write an interceptor code for this, but not sure how to write it
>> Any sample code or document will be very helpful
>>
>>
>> Claus Ibsen-2 wrote:
>>>
>>> On Fri, Apr 23, 2010 at 8:45 PM, gnanda
>>> <gi...@phaseforward.com> wrote:
>>>>
>>>> Hi all,
>>>> I am using camel to read a message from a Q sending to a HTTP
>>>> my route is as below
>>>>  from("jmstx:queue:spq2").bean(myBean,"setLocationUrI")
>>>> .recipientList(header(HttpProducer.HTTP_URI));
>>>>
>>>> I need to recive response code from the above http URI.
>>>> I need to make sure I receive 200 or 202 to declare as a success call.
>>>> How
>>>> would I receive the response code ?
>>>> Do I need to make the mep as in-out while sending exchange to external
>>>> web
>>>> service thru http endpoint to get the return code?
>>>>
>>>
>>> Since you only send to 1 endpoint in RecipientList, then Camel will
>>> return the last exchange as reply.
>>>
>>> So simply just continue routing after the recipient list, where you
>>> can check for the 200/202 codes.
>>>
>>> If you send to multiple endpoints in recipient list you can use an
>>> AggregationStrategy to merge the results together.
>>>
>>>
>>>> Please suggest
>>>>
>>>> --
>>>> View this message in context:
>>>> http://old.nabble.com/smx%3Acamel%3A-receiving-http-response-tp28345025p28345025.html
>>>> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>>>>
>>>>
>>>
>>>
>>>
>>> --
>>> Claus Ibsen
>>> Apache Camel Committer
>>>
>>> Author of Camel in Action: http://www.manning.com/ibsen/
>>> Open Source Integration: http://fusesource.com
>>> Blog: http://davsclaus.blogspot.com/
>>> Twitter: http://twitter.com/davsclaus
>>>
>>>
>>
>>
>
> --
> View this message in context: http://old.nabble.com/smx%3Acamel%3A-receiving-http-response-tp28345025p28367318.html
> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>
>

Re: smx:camel: receiving http response

Posted by gnanda <gi...@phaseforward.com>.
I tried to log response code by adding a bean class to my flow
from("jmstx:queue:spq2").bean(myBean,"setLocationUrI")
.recipientList(header(HttpProducer.HTTP_URI)).bean(myBean,"printResponse");
in the printResponse() method I have below code

log.info("MyBeanProcessor - Calling printResponse");
		log.info("MyBeanProcessor -exchange.isFailed():" + exchange.isFailed());
		Message out = exchange.getOut(); // giving nullpointerexception
		Object val = out.getHeader(HttpProducer.HTTP_RESPONSE_CODE);
		if (val != null) {
			log.info("MyBeanProcessor -val NOT null");
		} else {
			log.info("MyBeanProcessor -val null");
		}

it is printing "val null"
How would I recieve the resaponse code from http call? Do I need create an
interceptor code? Please suggest. Any sample will be very helpful



gnanda wrote:
> 
> Thanks for the reply. In my scenario, the call to http is a an async call 
> where the external webservice does not return any reply back. But it would
> just return me the status code whether accepted or not (200). I think I
> need to write an interceptor code for this, but not sure how to write it
> Any sample code or document will be very helpful
> 
> 
> Claus Ibsen-2 wrote:
>> 
>> On Fri, Apr 23, 2010 at 8:45 PM, gnanda
>> <gi...@phaseforward.com> wrote:
>>>
>>> Hi all,
>>> I am using camel to read a message from a Q sending to a HTTP
>>> my route is as below
>>>  from("jmstx:queue:spq2").bean(myBean,"setLocationUrI")
>>> .recipientList(header(HttpProducer.HTTP_URI));
>>>
>>> I need to recive response code from the above http URI.
>>> I need to make sure I receive 200 or 202 to declare as a success call.
>>> How
>>> would I receive the response code ?
>>> Do I need to make the mep as in-out while sending exchange to external
>>> web
>>> service thru http endpoint to get the return code?
>>>
>> 
>> Since you only send to 1 endpoint in RecipientList, then Camel will
>> return the last exchange as reply.
>> 
>> So simply just continue routing after the recipient list, where you
>> can check for the 200/202 codes.
>> 
>> If you send to multiple endpoints in recipient list you can use an
>> AggregationStrategy to merge the results together.
>> 
>> 
>>> Please suggest
>>>
>>> --
>>> View this message in context:
>>> http://old.nabble.com/smx%3Acamel%3A-receiving-http-response-tp28345025p28345025.html
>>> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>>>
>>>
>> 
>> 
>> 
>> -- 
>> Claus Ibsen
>> Apache Camel Committer
>> 
>> Author of Camel in Action: http://www.manning.com/ibsen/
>> Open Source Integration: http://fusesource.com
>> Blog: http://davsclaus.blogspot.com/
>> Twitter: http://twitter.com/davsclaus
>> 
>> 
> 
> 

-- 
View this message in context: http://old.nabble.com/smx%3Acamel%3A-receiving-http-response-tp28345025p28367318.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.


Re: smx:camel: receiving http response

Posted by gnanda <gi...@phaseforward.com>.
Thanks for the reply. In my scenario, the call to http is a an async call 
where the external webservice does not return any reply back. But it would
just return me the status code whether accepted or not (200). I think I need
to write an interceptor code for this, but not sure how to write it Any
sample code or document will be very helpful


Claus Ibsen-2 wrote:
> 
> On Fri, Apr 23, 2010 at 8:45 PM, gnanda
> <gi...@phaseforward.com> wrote:
>>
>> Hi all,
>> I am using camel to read a message from a Q sending to a HTTP
>> my route is as below
>>  from("jmstx:queue:spq2").bean(myBean,"setLocationUrI")
>> .recipientList(header(HttpProducer.HTTP_URI));
>>
>> I need to recive response code from the above http URI.
>> I need to make sure I receive 200 or 202 to declare as a success call.
>> How
>> would I receive the response code ?
>> Do I need to make the mep as in-out while sending exchange to external
>> web
>> service thru http endpoint to get the return code?
>>
> 
> Since you only send to 1 endpoint in RecipientList, then Camel will
> return the last exchange as reply.
> 
> So simply just continue routing after the recipient list, where you
> can check for the 200/202 codes.
> 
> If you send to multiple endpoints in recipient list you can use an
> AggregationStrategy to merge the results together.
> 
> 
>> Please suggest
>>
>> --
>> View this message in context:
>> http://old.nabble.com/smx%3Acamel%3A-receiving-http-response-tp28345025p28345025.html
>> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>>
>>
> 
> 
> 
> -- 
> Claus Ibsen
> Apache Camel Committer
> 
> Author of Camel in Action: http://www.manning.com/ibsen/
> Open Source Integration: http://fusesource.com
> Blog: http://davsclaus.blogspot.com/
> Twitter: http://twitter.com/davsclaus
> 
> 

-- 
View this message in context: http://old.nabble.com/smx%3Acamel%3A-receiving-http-response-tp28345025p28365033.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.


Re: smx:camel: receiving http response

Posted by Claus Ibsen <cl...@gmail.com>.
On Fri, Apr 23, 2010 at 8:45 PM, gnanda
<gi...@phaseforward.com> wrote:
>
> Hi all,
> I am using camel to read a message from a Q sending to a HTTP
> my route is as below
>  from("jmstx:queue:spq2").bean(myBean,"setLocationUrI")
> .recipientList(header(HttpProducer.HTTP_URI));
>
> I need to recive response code from the above http URI.
> I need to make sure I receive 200 or 202 to declare as a success call. How
> would I receive the response code ?
> Do I need to make the mep as in-out while sending exchange to external web
> service thru http endpoint to get the return code?
>

Since you only send to 1 endpoint in RecipientList, then Camel will
return the last exchange as reply.

So simply just continue routing after the recipient list, where you
can check for the 200/202 codes.

If you send to multiple endpoints in recipient list you can use an
AggregationStrategy to merge the results together.


> Please suggest
>
> --
> View this message in context: http://old.nabble.com/smx%3Acamel%3A-receiving-http-response-tp28345025p28345025.html
> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>
>



-- 
Claus Ibsen
Apache Camel Committer

Author of Camel in Action: http://www.manning.com/ibsen/
Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus