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 Wed, 24 Sep 2008 04:48:20 GMT
But I understand deadLetter to be a message that is not picked up. I am
talking about a message that is not processable.


On Tue, Sep 23, 2008 at 7:39 PM, Willem Jiang <willem.jiang@gmail.com>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