camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From titexe <tit...@yahoo.Fr>
Subject Re: Camel : Error Message to CSV file
Date Fri, 09 Oct 2009 09:21:36 GMT

you're right, the term simply does not support operators, problem solved in
version 2.0 Camel.

http://fusesource.com/issues/browse/MR-176

Otherwise, I solved the problem by using other language class message filter

as el  or jxpath, it works very well with the camel version 1.6.

thank you for your cooperation.

Best regards,

titexe


Claus Ibsen-2 wrote:
> 
> Hi
> 
> Ah Camel 1.x does NOT support the operators in the <simple> language.
> You cannot do this in 1.x. You need Camel 2.0 for that.
> 
> In Camel 1.x you can use a POJO to do the test
> 
> <bean id="xxx" class="xxxx.xxxx"/>
> 
> <when>
>    <methodCall bean="xxx" method="bla"/>
> 
> 
> On Thu, Oct 8, 2009 at 3:09 PM, titexe <AbdellatifBOUCHAMA@eurofins.com>
> wrote:
>>
>> sorry the other configuration is deformed, here is the setup I used
>>
>> to remember (camel version : 1.6.1, jvm version    : 1.6,activemq       :
>> fuse message broker 5.3.0.3 )
>>
>> and my config camel in activemq.xml
>>
>> <route errorHandlerRef="myDeadLetterChannel">
>>        <from uri="activemq:queue:AX.IN"/>
>>        <choice>
>>
>>                        <when>
>>                                <simple>${header.Action} ==
'AAE'</simple>
>>                        <setHeader
>> headerName="org.apache.camel.file.name">
>>                              
>>  <constant>${file:name.noext}_${header.Action}.csv</constant>
>>                                </setHeader>
>>
>> <to uri="file:///c:/CAMEL/IN/AAE"/>
>>                        </when>
>>                        <when>
>>                                <simple>${header.Action} ==
'PCA'</simple>
>> <setHeader headerName="org.apache.camel.file.name">
>>                              
>>  <constant>${file:name.noext}_${header.Action}.csv</constant>
>>                                </setHeader>
>>
>> <to uri="file:///c:/CAMEL/IN/PCA"/>
>>                        </when>
>>
>>                <otherwise>
>>        <to uri="activemq:queue:FilterError"/>
>>                </otherwise>
>>
>>          </choice>
>> </route>
>>
>>
>> titexe wrote:
>>>
>>> Is really a big problem, there's no place for logic:)
>>>
>>> I enabled the trace mode, the Action field is in the header of the
>>> message,
>>>
>>> I tried another solution, by changing the file name by adding at the end
>>> ${header.Action}
>>>
>>> The result: I get all the files in the directory c:/CAMEL/IN/AAE with a
>>> name FileName_PCA.csv or FileName_AAE.csv
>>>
>>> Conclusion: the filter does not work.
>>>
>>> Here is the setup I used:
>>>
>>> <route errorHandlerRef="myDeadLetterChannel">
>>>          <from uri="activemq:queue:AX.IN"/>
>>>          <choice>
>>>
>>>                          <when>
>>>                                  <simple> $ header.Action
() == 'AAE' </
>>> simple>
>>> <setHeader headerName="org.apache.camel.file.name">
>>> <constant> $ (file: name.noext ($ _)) header.Action. csv </ constant>
>>> </ setHeader>
>>>
>>> <t uri="file:///c:/CAMEL/IN/AAE"/>
>>>                          </ when>
>>>                          <when>
>>>                                  <simple> $ header.Action
() == 'PCA' </
>>> simple>
>>> <setHeader headerName="org.apache.camel.file.name">
>>> <constant> $ (file: name.noext ($ _)) header.Action. csv </ constant>
>>> </ setHeader>
>>>
>>> <t uri="file:///c:/CAMEL/IN/PCA"/>
>>>                          </ when>
>>>
>>>                  <otherwise>
>>>          <t uri="activemq:queue:FilterError"/>
>>>                  </ otherwise>
>>>
>>>            </ choice>
>>> </ route>
>>>
>>>
>>>
>>>
>>> Claus Ibsen-2 wrote:
>>>>
>>>> Hi
>>>>
>>>> Is there a Action header at all?
>>>>
>>>> You can use the tracer to look?
>>>> http://camel.apache.org/tracer
>>>>
>>>> I suspect this is the problem.
>>>>
>>>>
>>>> On Thu, Oct 8, 2009 at 12:49 PM, titexe
>>>> <AbdellatifBOUCHAMA@eurofins.com>
>>>> wrote:
>>>>>
>>>>> Thank you for your reply,
>>>>>
>>>>> now I get no errors for CSV files.
>>>>>
>>>>> cons by my filter does not work with the simple language, it puts all
>>>>> files
>>>>> received in the same directory
>>>>> <to uri="file:///c:/CAMEL/IN/AAE"/>
>>>>>
>>>>> below my configuration:
>>>>>
>>>>> <route errorHandlerRef="myDeadLetterChannel">
>>>>>        <from uri="activemq:queue:AX.IN"/>
>>>>>        <choice>
>>>>>
>>>>>                        <when>
>>>>>                                <simple>${in.header.Action}
==
>>>>> 'AAE'</simple>
>>>>> <to uri="file:///c:/CAMEL/IN/AAE"/>
>>>>>                        </when>
>>>>>                        <when>
>>>>>                                <simple>${in.header.Action}
==
>>>>> 'PCA'</simple>
>>>>> <to uri="file:///c:/CAMEL/IN/PCA"/>
>>>>>                        </when>
>>>>>
>>>>>                <otherwise>
>>>>>        <to uri="activemq:queue:FilterError"/>
>>>>>                </otherwise>
>>>>>
>>>>>          </choice>
>>>>> </route>
>>>>>
>>>>> Thank you again for your help.
>>>>>
>>>>>
>>>>> Claus Ibsen-2 wrote:
>>>>>>
>>>>>> On Thu, Oct 8, 2009 at 11:22 AM, titexe
>>>>>> <AbdellatifBOUCHAMA@eurofins.com>
>>>>>> wrote:
>>>>>>>
>>>>>>>
>>>>>>> my incoming queue, receives messages of bytes type.
>>>>>>>
>>>>>>> the message content in bytes may be an XML or CSV or PDF file
that I
>>>>>>> converted a file in the end.
>>>>>>>
>>>>>>> In the header of the message,there's on properties(Action), that
>>>>>>> allows
>>>>>>> me
>>>>>>> to place this file to the proper directory.
>>>>>>>
>>>>>>
>>>>>> Ah are you saying its a JMS property that has this value? If so you
>>>>>> can route without xpath using the header predicate instead
>>>>>> <xpath> $ action = 'AAE' </ xpath>
>>>>>>
>>>>>> Could then be
>>>>>> <simple>${header.action} == 'AAE' </header>
>>>>>>
>>>>>> Using the simple language to test this
>>>>>> http://camel.apache.org/simple.html
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>> From where I put <xpath> $ action = 'AAE' </ xpath>
<to
>>>>>>> uri="file:///c:/CSV/AAE"/>
>>>>>>>
>>>>>>> Thank you for helping me find a good solution to my problem
>>>>>>>
>>>>>>> Thank you again for your help
>>>>>>>
>>>>>>>
>>>>>>> Claus Ibsen-2 wrote:
>>>>>>>>
>>>>>>>> Hi
>>>>>>>>
>>>>>>>> Why do you have mixed message on that JMS queue?
>>>>>>>>
>>>>>>>> Can you not have 1 queue for XML files
>>>>>>>> And another queue for CSV files?
>>>>>>>>
>>>>>>>> If not I suggest to use 3 routes
>>>>>>>>
>>>>>>>> 1st route will consume from that JMS queue and check the
message
>>>>>>>> content if its XML or CSV.
>>>>>>>> And then route to either A or B depending on that
>>>>>>>>
>>>>>>>> 2nd route = A which is the XML route where you can use xpath
>>>>>>>>
>>>>>>>> 3rd route = B which is the CSV route where you use something
else
>>>>>>>> than
>>>>>>>> xpath. For example a java bean to check the action or what
you
>>>>>>>> would
>>>>>>>> like to do with the CSV file.
>>>>>>>>
>>>>>>>>
>>>>>>>> On Thu, Oct 8, 2009 at 10:48 AM, titexe
>>>>>>>> <AbdellatifBOUCHAMA@eurofins.com>
>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>> Firstly, thank you for your reply,
>>>>>>>>>
>>>>>>>>> Action is a field that exists in the header of the message
>>>>>>>>> (Message
>>>>>>>>> proportions), normally xpath ($ action = 'AAE') should
not parse
>>>>>>>>> the
>>>>>>>>> message
>>>>>>>>> body.
>>>>>>>>>
>>>>>>>>> if not, it is possible to use another command that allows
me to
>>>>>>>>> filter
>>>>>>>>> the
>>>>>>>>> fields in the header of the message without parsing the
message
>>>>>>>>> body?
>>>>>>>>> and
>>>>>>>>> it
>>>>>>>>> is possible to use it in my case <choice> of my
route?
>>>>>>>>>
>>>>>>>>> Thank you in advance
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Claus Ibsen-2 wrote:
>>>>>>>>>>
>>>>>>>>>> Hi
>>>>>>>>>>
>>>>>>>>>> You are using XPath expressions
>>>>>>>>>> <xpath> $ action = 'AAE' </ xpath>
>>>>>>>>>>
>>>>>>>>>> And they *require* the payload to be XML.
>>>>>>>>>> So you cannot use XPath with CSV.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Wed, Oct 7, 2009 at 10:59 AM, titexe
>>>>>>>>>> <AbdellatifBOUCHAMA@eurofins.com>
>>>>>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>> For information
>>>>>>>>>>>
>>>>>>>>>>> Version Camel = Camel V1.6.1.2
>>>>>>>>>>> Version Activemq = Fuse message broker 5.3.0.3
>>>>>>>>>>> Version Java = V1.6.0_16
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> titexe wrote:
>>>>>>>>>>>>
>>>>>>>>>>>> Hello,
>>>>>>>>>>>>
>>>>>>>>>>>> Here is the description of my route camel
: I get a message
>>>>>>>>>>>> type
>>>>>>>>>>>> Bytes
>>>>>>>>>>>> in
>>>>>>>>>>>> my queue, I transferred this message to another
broker instance
>>>>>>>>>>>> in
>>>>>>>>>>>> another
>>>>>>>>>>>> machine.
>>>>>>>>>>>>
>>>>>>>>>>>> was receiving this message I transformed
this message to CSV or
>>>>>>>>>>>> XML
>>>>>>>>>>>> file.
>>>>>>>>>>>>
>>>>>>>>>>>> my problem is that my route works very well
for XML files and
>>>>>>>>>>>> not
>>>>>>>>>>>> for
>>>>>>>>>>>> CSV
>>>>>>>>>>>> files.
>>>>>>>>>>>>
>>>>>>>>>>>> Here is my setup:
>>>>>>>>>>>>
>>>>>>>>>>>> <route errorHandlerRef="myDeadLetterChannel">
>>>>>>>>>>>> <from uri="activemq:queue:IN"/>
>>>>>>>>>>>> <choice>
>>>>>>>>>>>> <when>
>>>>>>>>>>>> <xpath> $ action = 'AAE' </ xpath>
>>>>>>>>>>>> <t uri="file:///c:/IN/AAE/"/>
>>>>>>>>>>>> <setBody>
>>>>>>>>>>>> <simple> UPDATE SET CAMEL CamelDate
= CURRENT_TIMESTAMP WHERE
>>>>>>>>>>>> message
>>>>>>>>>>>> =
>>>>>>>>>>>> '$
>>>>>>>>>>>> (in.header.MessageId)' </ simple>
>>>>>>>>>>>> </ setBody>
>>>>>>>>>>>> <t uri="jdbc:testdb"/>
>>>>>>>>>>>>                  </ when>
>>>>>>>>>>>> <when>
>>>>>>>>>>>> <xpath> $ action = 'FAE' </ xpath>
>>>>>>>>>>>> <t uri="file:///c:/IN/FAE/"/>
>>>>>>>>>>>> <setBody>
>>>>>>>>>>>> <simple> UPDATE SET CAMEL CamelDate
= CURRENT_TIMESTAMP WHERE
>>>>>>>>>>>> message
>>>>>>>>>>>> =
>>>>>>>>>>>> '$
>>>>>>>>>>>> (in.header.MessageId)' </ simple>
>>>>>>>>>>>> </ setBody>
>>>>>>>>>>>> <t uri="jdbc:testdb"/>
>>>>>>>>>>>>                  </ when>
>>>>>>>>>>>>
>>>>>>>>>>>>                  <otherwise>
>>>>>>>>>>>>                    <t uri="activemq:queue:FilterError"/>
>>>>>>>>>>>>                  </ otherwise>
>>>>>>>>>>>>
>>>>>>>>>>>>             </ choice>
>>>>>>>>>>>> </ route>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Here is the error that I receive when the
transformationfor CSV
>>>>>>>>>>>> file.
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> WARN EndpointMessageListener - Endpoint [ActiveMQ:
tail: IN]
>>>>>>>>>>>> consumer
>>>>>>>>>>>> caught an exception while processing JMS
message:
>>>>>>>>>>>> ActiveMQBytesMessage
>>>>>>>>>>>> CommandID = (10, responseRequired = false,
messageId = ID:
>>>>>>>>>>>> DCFR-4099-1254861846625-3: 0:1:1:1, originalDestination
= null,
>>>>>>>>>>>> originalTransactionId = null,
>>>>>>>>>>>>   producerId = ID: DCFR-4099-1254861846625-2:
0:1:1,
>>>>>>>>>>>> destination
>>>>>>>>>>>> =
>>>>>>>>>>>> queue:
>>>>>>>>>>>> / / IN, transactionId = null, expiration
= 0, timestamp =
>>>>>>>>>>>> 1254862039687,
>>>>>>>>>>>> arrived
>>>>>>>>>>>> l = 0, brokerInTime = 1254879861750, brokerOutTime
=
>>>>>>>>>>>> 1254879861765,
>>>>>>>>>>>> CorrelationId = null, ReplyTo = null, persistent
= true, type =
>>>>>>>>>>>> null,
>>>>>>>>>>>> priority = 4
>>>>>>>>>>>> , GroupID = null, groupSequence = 0, targetConsumerId
= null,
>>>>>>>>>>>> compressed
>>>>>>>>>>>> =
>>>>>>>>>>>> false, userID = null, content =
>>>>>>>>>>>> org.apache.activemq.util.ByteSequence
>>>>>>>>>>>> @
>>>>>>>>>>>> 6baf2
>>>>>>>>>>>> 4 marshalledProperties = org.apache.activemq.util.ByteSequence
>>>>>>>>>>>> @
>>>>>>>>>>>> 1b7a553,
>>>>>>>>>>>> Datastructures = null, redeliveryCounter
= 0, size = 2597,
>>>>>>>>>>>> properties
>>>>>>>>>>>> =
>>>>>>>>>>>> (Sourc
>>>>>>>>>>>> eEndpoint = null, org_apache_camel_file_name
=
>>>>>>>>>>>> EUANNA_PCA_20090901
>>>>>>>>>>>> (50e71be4-B408-48b3-9048-4e68faf6cbd3). csv
DestinationEndpoint
>>>>>>>>>>>> =
>>>>>>>>>>>> null,
>>>>>>>>>>>> MessageId = (50e71be
>>>>>>>>>>>> 4-B408-48b3-9048-4e68faf6cbd3), Action =
PCA PartnerCode =
>>>>>>>>>>>> EUANNA,
>>>>>>>>>>>> SourceEndpointUser = null, RequestMessageId
= null),
>>>>>>>>>>>> readOnlyProperties
>>>>>>>>>>>> =
>>>>>>>>>>>> true, readOnlyBo
>>>>>>>>>>>> dy = true, droppable = false) (ActiveMQBytesMessage
= null
>>>>>>>>>>>> bytesOut,
>>>>>>>>>>>> dataOut = null, @ DATAIN = java.io.DataInputStream
1d314cc)
>>>>>>>>>>>> org.apache.camel.RuntimeCamelException:
>>>>>>>>>>>> org.xml.sax.SAXParseException:
>>>>>>>>>>>> Content is not allowed in prolog.
>>>>>>>>>>>>          at org.apache.camel.util.ObjectHelper.invokeMethod
>>>>>>>>>>>> (ObjectHelper.java: 567)
>>>>>>>>>>>>          at
>>>>>>>>>>>> org.apache.camel.impl.converter.InstanceMethodTypeConverter.convertTo
>>>>>>>>>>>> (InstanceMethodTypeConverter.java: 57)
>>>>>>>>>>>>          at
>>>>>>>>>>>> org.apache.camel.impl.converter.DefaultTypeConverter.doConvertTo
>>>>>>>>>>>> (DefaultTypeConverter.java: 119)
>>>>>>>>>>>>          at
>>>>>>>>>>>> org.apache.camel.impl.converter.DefaultTypeConverter.convertTo
>>>>>>>>>>>> (DefaultTypeConverter.java: 90)
>>>>>>>>>>>>          at org.apache.camel.impl.MessageSupport.getBody
>>>>>>>>>>>> (MessageSupport.java: 79)
>>>>>>>>>>>>          at org.apache.camel.impl.MessageSupport.getBody
>>>>>>>>>>>> (MessageSupport.java: 52)
>>>>>>>>>>>>          at
>>>>>>>>>>>> org.apache.camel.builder.xml.XPathBuilder.getDocument
>>>>>>>>>>>> (XPathBuilder.java: 536)
>>>>>>>>>>>>          at
>>>>>>>>>>>> org.apache.camel.builder.xml.XPathBuilder.evaluateAs
>>>>>>>>>>>> (XPathBuilder.java: 428)
>>>>>>>>>>>>          at org.apache.camel.builder.xml.XPathBuilder.matches
>>>>>>>>>>>> (XPathBuilder.java: 106)
>>>>>>>>>>>>          at org.apache.camel.builder.xml.XPathBuilder.matches
>>>>>>>>>>>> (XPathBuilder.java: 65)
>>>>>>>>>>>>          at org.apache.camel.processor.ChoiceProcessor.process
>>>>>>>>>>>> (ChoiceProcessor.java: 47)
>>>>>>>>>>>>          at
>>>>>>>>>>>> org.apache.camel.management.InstrumentationProcessor.process
>>>>>>>>>>>> (InstrumentationProcessor.java: 80)
>>>>>>>>>>>>
>>>>>>>>>>>> Thank you for helping me resolve this problem,
>>>>>>>>>>>>
>>>>>>>>>>>> Thank you in advance,
>>>>>>>>>>>>
>>>>>>>>>>>> best regards,
>>>>>>>>>>>>
>>>>>>>>>>>> titexe
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> View this message in context:
>>>>>>>>>>> http://www.nabble.com/Camel-%3A-Error-Message-to-CSV-file-tp25781902p25782958.html
>>>>>>>>>>> Sent from the Camel - Users mailing list archive
at Nabble.com.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Claus Ibsen
>>>>>>>>>> Apache Camel Committer
>>>>>>>>>>
>>>>>>>>>> Open Source Integration: http://fusesource.com
>>>>>>>>>> Blog: http://davsclaus.blogspot.com/
>>>>>>>>>> Twitter: http://twitter.com/davsclaus
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> View this message in context:
>>>>>>>>> http://www.nabble.com/Camel-%3A-Error-Message-to-CSV-file-tp25781902p25800470.html
>>>>>>>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Claus Ibsen
>>>>>>>> Apache Camel Committer
>>>>>>>>
>>>>>>>> Open Source Integration: http://fusesource.com
>>>>>>>> Blog: http://davsclaus.blogspot.com/
>>>>>>>> Twitter: http://twitter.com/davsclaus
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> View this message in context:
>>>>>>> http://www.nabble.com/Camel-%3A-Error-Message-to-CSV-file-tp25781902p25800861.html
>>>>>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Claus Ibsen
>>>>>> Apache Camel Committer
>>>>>>
>>>>>> Open Source Integration: http://fusesource.com
>>>>>> Blog: http://davsclaus.blogspot.com/
>>>>>> Twitter: http://twitter.com/davsclaus
>>>>>>
>>>>>>
>>>>>
>>>>> --
>>>>> View this message in context:
>>>>> http://www.nabble.com/Camel-%3A-Error-Message-to-CSV-file-tp25781902p25801802.html
>>>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Claus Ibsen
>>>> Apache Camel Committer
>>>>
>>>> Open Source Integration: http://fusesource.com
>>>> Blog: http://davsclaus.blogspot.com/
>>>> Twitter: http://twitter.com/davsclaus
>>>>
>>>>
>>>
>>>
>>
>> --
>> View this message in context:
>> http://www.nabble.com/Camel-%3A-Error-Message-to-CSV-file-tp25781902p25802977.html
>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>
>>
> 
> 
> 
> -- 
> Claus Ibsen
> Apache Camel Committer
> 
> Open Source Integration: http://fusesource.com
> Blog: http://davsclaus.blogspot.com/
> Twitter: http://twitter.com/davsclaus
> 
> 

-- 
View this message in context: http://www.nabble.com/Camel-%3A-Error-Message-to-CSV-file-tp25781902p25818046.html
Sent from the Camel - Users mailing list archive at Nabble.com.


Mime
View raw message