On Wed, Jan 13, 2010 at 8:07 AM, ztesoft <[email protected]> wrote: > > This method "seems" like solve the problem. > But, I find soapUI waited for the http reply after it sent the request until > the program ended. > Maybe this is another topic about how to handle the request and reply. Does > anyone know it? > Also I want to ask how can I save many requests into one file not one > request into one file. >
You should append to the file and specify a filename to use. http://camel.apache.org/file2.html For example adding these options to the URI fileExist=Append&fileName=foo.txt The fileName can also be specified from Java by setting the Exchange.FILE_NAME header. > > > > willem.jiang wrote: >> >> It's a stream caching issue, Camel 2.x disable it by default for better >> performance. >> You can more information here[1] >> >> [1] http://camel.apache.org/stream-caching.html >> >> Willem >> >> ext2 wrote: >>>>> Use .convertBodyTo(String.class) after the from. This will store the >>>>> HTTP >>> data >>>>> as a String which can be safely duplicated when you do a multicast. >>> Is the problem is really caused by duplicating message? >>> >>> If it does, does the multi-cast support a strategy for end-user who can >>> control how to duplicate the data saved in message? >>> >>> >>> -----Original----- >>> Sender: Claus Ibsen [mailto:[email protected]] >>> Date: 2010-1-11 14:18 >>> Receiver: [email protected] >>> Subject: Re: Question about multicasting. >>> >>> On Mon, Jan 11, 2010 at 7:00 AM, ztesoft <[email protected]> wrote: >>>> Dears, I try to use multicast to save the received message into two >>>> files >>>> using >>>> >>> "from("jetty:http://0.0.0.0:8080/").multicast().to("file://output","file://o >>> utput1");" >>>> It works correctly. Two files will be saved in /output/.camel/ and >>>> /output1/.camel/ folders separately. >>>> >>>> But if I use activemq for a endpoint, there may be something wrong. >>>> 1st. I use activemy queue instead of the second endpoint. >>>> >>>> >>> from("jetty:http://0.0.0.0:8080/").multicast().to("file://output","test-jms: >>> queue:test.queue"); >>>> from("test-jms:queue:test.queue").process(new Processor() { >>>> public void process(Exchange e) throws IOException { >>>> System.out.println("Received exchange: " + >>>> e.getIn()); >>>> >>>> System.out.println(e.getIn().getBody(String.class)); >>>> } >>>> }); >>>> } >>>> }); >>>> In this case, when I send a HTTP request, the result is one file saved >>>> in >>>> /output/ folder and a message displayed in console. The content of this >>>> message is: >>>> "Received exchange: JmsMessage: ActiveMQBytesMessage {commandId = 5, >>>> responseRequired = true, messageId = >>> ID:chenyi-4710-1263188603156-2:2:1:1:1, >>>> originalDestination = null, originalTransactionId = null, producerId = >>>> ID:chenyi-4710-1263188603156-2:2:1:1, destination = queue://test.queue, >>>> transactionId = null, expiration = 1263188625859, timestamp = >>> 1263188605859, >>>> arrival = 0, brokerInTime = 1263188605859, brokerOutTime = >>>> 1263188605859, >>>> correlationId = 5a1b6157-a4cb-4f8a-aa78-82519a776bf0, replyTo = >>>> temp-queue://ID:chenyi-4710-1263188603156-2:1:1, persistent = true, type >>>> = >>>> null, priority = 4, groupID = null, groupSequence = 0, targetConsumerId >>>> = >>>> null, compressed = false, userID = null, content = >>>> org.apache.activemq.util.byteseque...@6a63d3, marshalledProperties = >>>> null, >>>> dataStructure = null, redeliveryCounter = 0, size = 1024, properties = >>>> {CamelHttpUrl=http://127.0.0.1:8080/, >>>> Content_HYPHEN_Type=text/xml;charset=UTF-8, Host=127.0.0.1:8080, >>>> CamelHttpMethod=POST, Content_HYPHEN_Length=681, >>>> SOAPAction="http://www.ctcc.com/service/sendSms", >>>> CamelHttpCharacterEncoding=UTF-8, User_HYPHEN_Agent=Jakarta >>>> Commons-HttpClient/3.0.1, CamelHttpPath=/, CamelHttpUri=/}, >>>> readOnlyProperties = true, readOnlyBody = true, droppable = false} >>>> ActiveMQBytesMessage{ bytesOut = null, dataOut = null, dataIn = >>>> java.io.datainputstr...@bfed5a }" >>>> >>>> 2nd. >>>> I change the order for the multicast endpoint. >>>> >>>> >>> from("jetty:http://0.0.0.0:8080/").multicast().to("test-jms:queue:test.queue >>> ","file://output"); >>>> from("test-jms:queue:test.queue").process(new Processor() { >>>> public void process(Exchange e) throws IOException { >>>> System.out.println("Received exchange: " + >>>> e.getIn()); >>>> >>>> System.out.println(e.getIn().getBody(String.class)); >>>> } >>>> }); >>>> } >>>> }); >>>> In this case, when I send a HTTP request, the message displayed >>>> correctly >>> in >>>> th console(the http request body displayed). But there is not any file >>> saved >>>> in any folder. >>>> >>>> Does anyone know the reasons and how to solve this problem? >>>> -- >>> >>> Use .convertBodyTo(String.class) after the from. This will store the >>> HTTP data as a String which can be safely duplicated when you do a >>> multicast. >>> >>> >>> >>>> View this message in context: >>> http://old.nabble.com/Question-about-multicasting.-tp27106219p27106219.html >>>> Sent from the Camel - Users mailing list archive at Nabble.com. >>>> >>>> >>> >>> >>> >> >> >> > > -- > View this message in context: > http://old.nabble.com/Question-about-multicasting.-tp27106219p27140410.html > Sent from the Camel - Users mailing list archive at Nabble.com. > > -- Claus Ibsen Apache Camel Committer Author of Camel in Action: http://www.manning.com/ibsen/ Open Source Integration: http://fusesource.com Blog: http://davsclaus.blogspot.com/ Twitter: http://twitter.com/davsclaus
