[ https://issues.apache.org/activemq/browse/CAMEL-1350?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=62171#action_62171 ]
Steve Bate commented on CAMEL-1350: ----------------------------------- Bengt, that problem is not completely solved yet although I have experimented with some ideas. I'd like to get some feedback about it from the experienced Camel developers. On the issue of propagating exceptions back to the FIX engine, what do we do in a case where there are multiple listeners (ultimately "consumers") of a FIX message? If a single listener throws an exception (e.g., because they expected an optional field in a message), do we roll back the FIX sequence number? This would cause the message to be resent to all listeners, whether they had a problem with the original message or not. I'm thinking we may want to only support specific exceptions that affect the behavior of the FIX engine (RejectLogon, DoNotSend, and UnsupportedMessageType). It's a bit risky to rollback on message-related exceptions since the same exception will likely be thrown when the message is re-received. It could be an endless retry scenario in the worst case. I'm thinking those types of exceptions are probably best handled in the application. Intercepting administrative messages (like logon, for adding credentials) is a bit tricky. I was thinking that maybe we could support pluggable interceptors in the quickfix component. This would actually be more modular than the traditional Application callback-based approach. If we agree on an approach, I think we'll be able to quickly implement a solution. > camel-quickfix component in apache camel distribution > ----------------------------------------------------- > > Key: CAMEL-1350 > URL: https://issues.apache.org/activemq/browse/CAMEL-1350 > Project: Apache Camel > Issue Type: New Feature > Environment: <properties> > <camel-version>2.0-SNAPSHOT</camel-version> > <fuse-version>2.x-fuse-SNAPSHOT</fuse-version> > <activemq-version>5.2.0</activemq-version> > <quickfix-version>1.3.3</quickfix-version> > <mina-version>1.1.0</mina-version> > <slf4j-version>1.5.6</slf4j-version> > </properties> > Reporter: Charles Moulliard > Assignee: Hadrian Zbarcea > Fix For: 2.5.0 > > Attachments: camel-quickfix-2.zip, camel-quickfix.patch, > camel-quickfix.zip, camel-quickfix.zip, QuickFixDataFormat.java, > reportincident.quickfix.zip > > > Hi, > ATTENTION: Ignoring converter type: org.apache.camel.fix.FixConverter as a > dependent class could not be found: java.lang.NoClassDefFoundError: > biz/c24/io/api/data/DataType > java.lang.NoClassDefFoundError: biz/c24/io/api/data/DataType > at java.lang.Class.getDeclaredMethods0(Native Method) > at java.lang.Class.privateGetDeclaredMethods(Class.java:2427) > at java.lang.Class.getDeclaredMethods(Class.java:1791) > at > org.apache.camel.impl.converter.AnnotationTypeConverterLoader.loadConverterMethods(AnnotationTypeConverterLoader.java:147) > at > org.apache.camel.impl.converter.AnnotationTypeConverterLoader.load(AnnotationTypeConverterLoader.java:78) > at > org.apache.camel.impl.converter.DefaultTypeConverter.checkLoaded(DefaultTypeConverter.java:260) > at > org.apache.camel.impl.converter.DefaultTypeConverter.convertTo(DefaultTypeConverter.java:95) > at > org.apache.camel.impl.converter.DefaultTypeConverter.convertTo(DefaultTypeConverter.java:71) > at > org.apache.camel.util.IntrospectionSupport.convert(IntrospectionSupport.java:263) > at > org.apache.camel.util.IntrospectionSupport.setProperty(IntrospectionSupport.java:221) > at > org.apache.camel.util.IntrospectionSupport.setProperties(IntrospectionSupport.java:188) > at > org.apache.camel.impl.DefaultComponent.setProperties(DefaultComponent.java:213) > at > org.apache.camel.component.file.GenericFileComponent.createEndpoint(GenericFileComponent.java:63) > at > org.apache.camel.component.file.GenericFileComponent.createEndpoint(GenericFileComponent.java:33) > at > org.apache.camel.impl.DefaultComponent.createEndpoint(DefaultComponent.java:81) > at > org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:330) > at > org.apache.camel.util.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:54) > at org.apache.camel.model.RouteType.resolveEndpoint(RouteType.java:96) > at > org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:106) > at > org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:112) > at org.apache.camel.model.FromType.resolveEndpoint(FromType.java:72) > at > org.apache.camel.impl.DefaultRouteContext.getEndpoint(DefaultRouteContext.java:81) > at org.apache.camel.model.RouteType.addRoutes(RouteType.java:239) > at org.apache.camel.model.RouteType.addRoutes(RouteType.java:86) > at > org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:661) > at > org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:651) > at > org.apache.camel.spring.SpringCamelContext.maybeDoStart(SpringCamelContext.java:166) > at > org.apache.camel.spring.SpringCamelContext.doStart(SpringCamelContext.java:161) > at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:49) > at > org.apache.camel.spring.SpringCamelContext.maybeStart(SpringCamelContext.java:96) > at > org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:115) > at > org.springframework.context.event.SimpleApplicationEventMulticaster$1.run(SimpleApplicationEventMulticaster.java:78) > at > org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:49) > at > org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:76) > at > org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:274) > at > org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:736) > at > org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:383) > at > org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139) > at > org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:93) > at > org.apache.camel.spring.Main.createDefaultApplicationContext(Main.java:232) > at org.apache.camel.spring.Main.doStart(Main.java:186) > at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:49) > at org.apache.camel.util.MainSupport.run(MainSupport.java:121) > at org.apache.camel.util.MainSupport.run(MainSupport.java:299) > at org.apache.camel.spring.Main.main(Main.java:98) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) > at org.apache.camel.maven.RunMojo$1.run(RunMojo.java:396) > at java.lang.Thread.run(Thread.java:619) > The org.apache.camel.fix.FixConverter class uses proprietary classes : > import biz.c24.io.api.data.BooleanDataType; > import biz.c24.io.api.data.CharDataType; > import biz.c24.io.api.data.ComplexDataObject; > import biz.c24.io.api.data.ComplexDataType; > import biz.c24.io.api.data.DataType; > import biz.c24.io.api.data.DateDataType; > import biz.c24.io.api.data.Element; > import biz.c24.io.api.data.IntDataType; > import biz.c24.io.api.data.NumberDataType; > import biz.c24.io.api.data.StringDataType; > import biz.c24.io.api.presentation.TextualSource; > import biz.c24.io.fix42.NewOrderSingleElement; > Except if those classes are part of open source community but How can I use > this component without Artix Data Service ? > ex config : > <route> > <from uri="fixserver:banzai-to-camel.cfg" /> > <to uri="log:quickfix" /> > </route> -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.