See about bridge error handler
http://camel.apache.org/why-does-my-file-consumer-not-pick-up-the-file-and-how-do-i-let-the-file-consumer-use-the-camel-error-handler.html

On Thu, May 5, 2016 at 2:30 PM, Kriti <kriti0...@gmail.com> wrote:
> Hi All,
>
> Following is a code snippet from the camel route we have-
>
>
> class CacheRouteBuilder extends CustomRouteBuilder {
>
> -------
> -------
>
>         void configure() throws DataException, DataExchangeException, 
> Exception{
>                 //Refer CCG Customizer Parser
>                 def Parser ccgParser = new CAPIPipeParser()
>                 /**
>                  * Code for Exception Handling
>                  *
>                  */
>
>                 onException(Exception.class)
>                                 .handled(true)
>                                 .process{
>                                         Throwable caused = 
> it.getProperty(it.EXCEPTION_CAUGHT, Exception.class)
>                                         logger.error("Exception in Cache 
> Route : ",caused)
>                                         def ack = 
> createNakMessage(it,caused.getMessage())
>                                         it.out.body = ack
>                                         logger.debug("after setting nack....")
>                                 }
>                                 .marshal().hl7();
>
>                 /**
>                  * Step 1 - read input from TCP MINA Endpoint
>                  * Step 2 - un-marshal the input
>                  * Step 3 - save the original message
>                  * Step 4 - forward to direct endpoint
>                  */
>                 from('mina2:tcp://' + incomingHL7Listener.getIp() + ':' +
> incomingHL7Listener.getPort() + '?codec=#hl7codec')
>
>                                 //convert to UTF-8 string
>
> .transmogrify('hl7Transmogrifier').staticParams(incomingHL7Listener.getCharset())
>                                 ------------
>                                 ------------
>                                 ------------
>                                 .to('direct:parsedHL7');
>
>         }
> }
>
> In the spring configuration, hl7codec is configured to take camel's
> HL7MLLPCodec-
>
> <bean id="hl7codec" class="org.apache.camel.component.hl7.HL7MLLPCodec">
>                 <property name="charset" value="UTF-8" />
> </bean>
>
> Due to some erroneous messages being sent to this route, whenever Mina is
> not able to decode the message, it throws a Runtime exception which actually
> comes as a warning to our code. Following are the details of the exception
> that can be seen in our logs-
>
> 2016-05-05 11:58:00     WARN  [org.apache.camel.component.mina2.Mina2Consumer]
> "Closing session as an exception was thrown from MINA"
> 2016-05-05 11:58:00     WARN
> [org.apache.mina.core.filterchain.DefaultIoFilterChain]  "Unexpected
> exception from exceptionCaught handler."
> org.apache.camel.CamelException:
> org.apache.mina.filter.codec.ProtocolDecoderException:
> java.lang.RuntimeException: java.nio.charset.MalformedInputException: Input
> length = 2 (Hexdump: 0B 4D 53 48 7C 5E 7E 5C 26 7C 52 49 53 7C 46 41 43 49
> 4C 49 54 59 7C 44 4D 57 4C 7C 47 45 50 41 43 53 7C 32 30 31 36 30 35 30 33
> 31 31 32 31 32 30 7C 34 30 36 35 7C 4F 52 4D 5E 4F 30 31 7C 31 33 31 39 39
> 31 7C 50 7C 32 2E 33 0D 50 49 44 7C 7C 7C 48 4E 45 31 33 35 37 35 31 33 34
> 34 36 5E 5E 5E 50 49 5E 50 49 7C 7C 4C 4F 56 44 41 48 4C 5E 43 48 41 52 4C
> 4F 54 54 45 5E 4D 41 52 49 45 5E 5E 5E 5E 4C 7C 7C 31 39 35 38 30 34 33 30
> 7C 46 7C 7C 43 7C 7C 7C 32 36 32 36 33 37 32 32 32 38 5E 50 52 4E 5E 50 48
> 7C 7C 7C 7C 7C 31 30 33 36 39 38 39 34 36 5E 5E 5E 41 4E 5E 41 4E 0D 50 56
> 31 7C 7C 4F 7C 41 55 53 5E 20 5E 20 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C
> 4E 7C 7C 7C 31 30 33 36 39 38 39 34 36 5E 5E 5E 56 4E 5E 56 4E 7C 7C 7C 7C
> 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C 32 30 31 36
> 30 35 30 33 31 31 32 31 32 30 0D 4F 52 43 7C 4E 57 7C 31 30 30 30 30 35 36
> 38 37 34 5E 43 43 47 50 4C 4F 52 7C 31 30 30 30 30 35 36 38 37 34 5E 43 43
> 47 46 4C 4F 52 7C 7C 49 50 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C 41 55 53 0D
> 4F 42 52 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C 20 7C 7C 7C 7C 7C 31 30 30
> 30 30 35 36 38 37 34 7C 31 30 30 30 30 35 36 38 37 34 7C 31 30 30 30 30 35
> 36 38 37 34 7C 20 7C 7C 7C 7C 7C 7C 5E 5E 5E 32 30 31 36 30 35 30 33 31 31
> 33 30 30 30 5E 5E 52 7C 7C 7C 7C 5E 69 6E 63 69 64 65 6E 74 61 6C 20 68 79
> 70 6F 61 74 74 65 6E 75 61 74 69 6E 67 20 6C 69 76 65 72 20 6C 65 73 69 6F
> 6E 73 20 6F 6E 20 EF BE 3F 20 43 54 20 73 63 61 6E 20 69 6E 20 32 30 31 30
> 2C 0D 5A 44 53 7C 31 2E 32 2E 38 34 30 2E 31 31 33 36 31 39 2E 32 2E 31 38
> 32 2E 31 30 38 30 38 36 31 37 39 35 33 31 36 35 2E 31 34 36 32 32 39 32 34
> 39 35 2E 31 31 38 32 31 35 0D 5A 46 4C 7C 7C 55 4E 4B 4E 4F 57 4E 5F 57 4C
> 43 0D 5A 44 54 7C 7C 7C 7C 7C 32 7C 69 6E 63 69 64 65 6E 74 61 6C 20 68 79
> 70 6F 61 74 74 65 6E 75 61 74 69 6E 67 20 6C 69 76 65 72 20 6C 65 73 69 6F
> 6E 73 20 6F 6E 20 EF BE 3F 20 43 54 20 73 63 61 6E 20 69 6E 20 32 30 31 30
> 2C 20 0D 1C 0D)
>         at
> org.apache.camel.component.mina2.Mina2Consumer$ReceiveHandler.exceptionCaught(Mina2Consumer.java:314)
>         at
> org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.exceptionCaught(DefaultIoFilterChain.java:672)
>         at
> org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextExceptionCaught(DefaultIoFilterChain.java:461)
>         at
> org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1100(DefaultIoFilterChain.java:47)
>         at
> org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.exceptionCaught(DefaultIoFilterChain.java:760)
>         at
> org.apache.mina.core.filterchain.IoFilterEvent.fire(IoFilterEvent.java:93)
>         at org.apache.mina.core.session.IoEvent.run(IoEvent.java:63)
>         at
> org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.runTask(OrderedThreadPoolExecutor.java:769)
>         at
> org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.runTasks(OrderedThreadPoolExecutor.java:761)
>         at
> org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.run(OrderedThreadPoolExecutor.java:703)
>         at java.lang.Thread.run(Unknown Source)
> Caused by: org.apache.mina.filter.codec.ProtocolDecoderException:
> java.lang.RuntimeException: java.nio.charset.MalformedInputException: Input
> length = 2 (Hexdump: 0B 4D 53 48 7C 5E 7E 5C 26 7C 52 49 53 7C 46 41 43 49
> 4C 49 54 59 7C 44 4D 57 4C 7C 47 45 50 41 43 53 7C 32 30 31 36 30 35 30 33
> 31 31 32 31 32 30 7C 34 30 36 35 7C 4F 52 4D 5E 4F 30 31 7C 31 33 31 39 39
> 31 7C 50 7C 32 2E 33 0D 50 49 44 7C 7C 7C 48 4E 45 31 33 35 37 35 31 33 34
> 34 36 5E 5E 5E 50 49 5E 50 49 7C 7C 4C 4F 56 44 41 48 4C 5E 43 48 41 52 4C
> 4F 54 54 45 5E 4D 41 52 49 45 5E 5E 5E 5E 4C 7C 7C 31 39 35 38 30 34 33 30
> 7C 46 7C 7C 43 7C 7C 7C 32 36 32 36 33 37 32 32 32 38 5E 50 52 4E 5E 50 48
> 7C 7C 7C 7C 7C 31 30 33 36 39 38 39 34 36 5E 5E 5E 41 4E 5E 41 4E 0D 50 56
> 31 7C 7C 4F 7C 41 55 53 5E 20 5E 20 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C
> 4E 7C 7C 7C 31 30 33 36 39 38 39 34 36 5E 5E 5E 56 4E 5E 56 4E 7C 7C 7C 7C
> 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C 32 30 31 36
> 30 35 30 33 31 31 32 31 32 30 0D 4F 52 43 7C 4E 57 7C 31 30 30 30 30 35 36
> 38 37 34 5E 43 43 47 50 4C 4F 52 7C 31 30 30 30 30 35 36 38 37 34 5E 43 43
> 47 46 4C 4F 52 7C 7C 49 50 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C 41 55 53 0D
> 4F 42 52 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C 7C 20 7C 7C 7C 7C 7C 31 30 30
> 30 30 35 36 38 37 34 7C 31 30 30 30 30 35 36 38 37 34 7C 31 30 30 30 30 35
> 36 38 37 34 7C 20 7C 7C 7C 7C 7C 7C 5E 5E 5E 32 30 31 36 30 35 30 33 31 31
> 33 30 30 30 5E 5E 52 7C 7C 7C 7C 5E 69 6E 63 69 64 65 6E 74 61 6C 20 68 79
> 70 6F 61 74 74 65 6E 75 61 74 69 6E 67 20 6C 69 76 65 72 20 6C 65 73 69 6F
> 6E 73 20 6F 6E 20 EF BE 3F 20 43 54 20 73 63 61 6E 20 69 6E 20 32 30 31 30
> 2C 0D 5A 44 53 7C 31 2E 32 2E 38 34 30 2E 31 31 33 36 31 39 2E 32 2E 31 38
> 32 2E 31 30 38 30 38 36 31 37 39 35 33 31 36 35 2E 31 34 36 32 32 39 32 34
> 39 35 2E 31 31 38 32 31 35 0D 5A 46 4C 7C 7C 55 4E 4B 4E 4F 57 4E 5F 57 4C
> 43 0D 5A 44 54 7C 7C 7C 7C 7C 32 7C 69 6E 63 69 64 65 6E 74 61 6C 20 68 79
> 70 6F 61 74 74 65 6E 75 61 74 69 6E 67 20 6C 69 76 65 72 20 6C 65 73 69 6F
> 6E 73 20 6F 6E 20 EF BE 3F 20 43 54 20 73 63 61 6E 20 69 6E 20 32 30 31 30
> 2C 20 0D 1C 0D)
>         at
> org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:242)
>         at
> org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:417)
>         at
> org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:47)
>         at
> org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:765)
>         at
> org.apache.mina.core.filterchain.IoFilterAdapter.messageReceived(IoFilterAdapter.java:109)
>         at
> org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:417)
>         at
> org.apache.mina.core.filterchain.DefaultIoFilterChain.fireMessageReceived(DefaultIoFilterChain.java:410)
>         at
> org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:710)
>         at
> org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:664)
>         at
> org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:653)
>         at
> org.apache.mina.core.polling.AbstractPollingIoProcessor.access$600(AbstractPollingIoProcessor.java:67)
>         at
> org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:1124)
>         at
> org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
>         at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
>         ... 1 more
> Caused by: java.lang.RuntimeException:
> java.nio.charset.MalformedInputException: Input length = 2
>         at
> org.apache.camel.component.hl7.HL7MLLPDecoder.writeString(HL7MLLPDecoder.java:79)
>         at
> org.apache.camel.component.hl7.HL7MLLPDecoder.doDecode(HL7MLLPDecoder.java:54)
>         at
> org.apache.mina.filter.codec.CumulativeProtocolDecoder.decode(CumulativeProtocolDecoder.java:176)
>         at
> org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:232)
>         ... 15 more
> Caused by: java.nio.charset.MalformedInputException: Input length = 2
>         at java.nio.charset.CoderResult.throwException(Unknown Source)
>         at
> org.apache.mina.core.buffer.AbstractIoBuffer.getString(AbstractIoBuffer.java:1768)
>         at
> org.apache.camel.component.hl7.HL7MLLPDecoder.writeString(HL7MLLPDecoder.java:70)
>         ... 18 more
>
> We need to be able to catch this exception through our code/route and send a
> negative acknowledgement back to the sending system. The onException block
> of code above is not being able to do that for us. In case an exception is
> thrown at route level, camel actually processes the onException block but in
> our case, this exception is thrown by Mina's Codec itself and there is no
> way we can get the system diagnose it and break out from there.
>
> Kindly let us know if there are any suggestions around this issue. Thanks in
> advance!
>
> Regards,
> Kriti
>
>
>
> --
> View this message in context: 
> http://camel.465427.n5.nabble.com/Unable-to-catch-and-deal-with-the-ProtocolDecoderException-thrown-by-Mina-in-our-camel-tp5782229.html
> Sent from the Camel Development mailing list archive at Nabble.com.



-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2

Reply via email to