camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mick Knutson" <mknut...@baselogic.com>
Subject Re: Trying to understand how to deal with process() errors and creating an exceptionChannel for bad messages.
Date Thu, 25 Sep 2008 05:34:49 GMT
But my test throws an exception, and created

On Wed, Sep 24, 2008 at 8:23 PM, Willem Jiang <willem.jiang@gmail.com>wrote:

> Can you take a look at the below unit test, the message is only sent to the
> "mock:fail" endpoint when the exception is thrown.
>
>
> Willem Jiang wrote:
>
>> Hi
>>
>> You don't need to call the exchange.isFailed(),  it just check if the
>> exchange's  fault message  or exception  is set.
>> Here is a Unit test of DeadLetterChannel[1],  which shows what you want.
>> Please check it out.
>>
>> [1]
>> https://svn.apache.org/repos/asf/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelTest.java
>>
>> Willem
>>
>> Mick Knutson wrote:
>>
>>> To give some background here is my process:
>>>
>>>    *public void process(Exchange exchange)
>>>            throws Exception {
>>>        log.info("process ChangeRequestInputTransformer request");
>>>
>>>        String body = (String) exchange.getIn().getBody();
>>>
>>>        // Get a Map of Items from the input message
>>>        JSONObject jsonIn = new JSONObject(body);
>>>
>>>        // validate input message, route to verifyErrorEndpoint if there
>>> are
>>> errors.
>>>        String customerId = jsonIn.getString(Constants.CUSTOMER_ID);
>>>        String type = jsonIn.getString(Constants.CHANGEREQUST_TYPE);
>>>        String quota = jsonIn.getString(Constants.QUOTA);
>>>
>>>        ChangeRequest changeRequest = null;
>>>
>>>        try {
>>>
>>>            if (type.equalsIgnoreCase(Constants.PROVISION)) {
>>>                log.info("***** PROVISION *****");
>>>                changeRequest = createProvisionChangeRequest(customerId,
>>> quota); // can throw Exception
>>>                exchange.getOut().setHeader(Constants.REQUEST_DESTINATION,
>>> Constants.REQUEST_OUTPUT_CHANNEL);
>>>
>>>            } else if (type.equalsIgnoreCase(Constants.DEPROVISION)) {
>>>                log.info("DEPROVISION");
>>>            } else {
>>>                log.error("Invalid Change Request");
>>>                exchange.getOut().setHeader(Constants.REQUEST_DESTINATION,
>>> Constants.REQUEST_INPUT_ERROR_CHANNEL);
>>>            }
>>>
>>>            String jsonOut = toJSON(body);
>>>
>>>
>>>  exchange.getOut().setMessageId(changeRequest.getChangeRequestId()
>>> + "");
>>>            exchange.getOut().setHeader(Constants.CORRELATION_ID,
>>> changeRequest.getChangeRequestId());
>>>            exchange.getOut().setHeader(Constants.TIMEOUT, new
>>> Integer(5000)); // fixme: 5 seconds....
>>>            exchange.getOut().setHeader(Constants.CUSTOMER_ID,
>>> changeRequest.getCustomerId());
>>>
>>>            exchange.getOut().setBody(jsonOut);
>>>
>>>            //todo need to rout to CR_INPUT_ERROR_CHANNEL if there is an
>>> error.
>>>
>>>            log.info("*********************************");
>>>        } catch (Exception e) {
>>>            exchange.isFailed();
>>>            throw new Exception("Error creating Change Request");
>>>        }
>>>    }
>>> *
>>>
>>> Now, I get an exception with
>>> *exchange.getOut().setMessageId(changeRequest.getChangeRequestId()
>>> + ""); *but my mock still gets the expected number of messages.
>>>
>>> so I need to understand how to stop the current message, and redirect
>>> this
>>> to an error channel instead.
>>>
>>>
>>>
>>>
>>> On Tue, Sep 23, 2008 at 1:50 PM, Mick Knutson <mknutson@baselogic.com
>>> >wrote:
>>>
>>>
>>>
>>>> I have input messages that I am trying to process, and when there is an
>>>> error, I want to create a new exceptionMessage and put it onto an
>>>> inputErrorChannel .
>>>>
>>>>
>>>>
>>>> --
>>>> ---
>>>> Thank You…
>>>>
>>>> Mick Knutson
>>>> BASE Logic, inc.
>>>> (415) 354-4215
>>>>
>>>> Website: http://baselogic.com
>>>> Blog: http://baselogic.com/blog
>>>> BLiNC Magazine: http://blincmagazine.com
>>>> Linked IN: http://linkedin.com/in/mickknutson
>>>> DJ Mick: http://djmick.com
>>>> MySpace: http://myspace.com/mickknutson
>>>> Vacation Rental: http://tahoe.baselogic.com
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>>
>>
>>
>>
>


-- 
---
Thank You…

Mick Knutson
BASE Logic, inc.
(415) 354-4215

Website: http://baselogic.com
Blog: http://baselogic.com/blog
BLiNC Magazine: http://blincmagazine.com
Linked IN: http://linkedin.com/in/mickknutson
DJ Mick: http://djmick.com
MySpace: http://myspace.com/mickknutson
Vacation Rental: http://tahoe.baselogic.com

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message