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 <abdellatifbouch...@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
>>>> <abdellatifbouch...@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
>>>>>> <abdellatifbouch...@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
>>>>>>>> <abdellatifbouch...@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.

Reply via email to