[
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.