camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Claus Ibsen <claus.ib...@gmail.com>
Subject Re: Camel : Error Message to CSV file
Date Thu, 08 Oct 2009 13:12:26 GMT
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

Mime
View raw message