Re: Route starts when deployed with a cxf endpoint
Hello Christian, The camel version is 2.10.2 and the route is - from(ftp://ipadress).process(processor()).to (cxf://http://ipadress?serviceName=XXXServiceportName=YYYPort); Regards, Dhananjay -- View this message in context: http://camel.465427.n5.nabble.com/Route-starts-when-deployed-with-a-cxf-endpoint-tp5729593p5729741.html Sent from the Camel - Users mailing list archive at Nabble.com.
Re: How to call CXF web service from Camel
HI, Thanks for your reply. I have already checked that my web service is deployed correctly and I can consume it with Java client. As per your suggestion I made changes camel-context.xml in as follow cxf:cxfEndpoint id=HelloService address=http://localhost:8080/HelloWeb/Hello; wsdlURL=http://localhost:8080/HelloWeb/Hello?wsdl; endpointName=HelloFirstImplService serviceName=HelloFirstImplService / But when I run it I get following error as Service class must be specified Exception in thread main org.apache.camel.FailedToCreateProducerException: Failed to create Producer for endpoint: Endpoint[http://localhost:8080/HelloWeb/Hello]. Reason: java.lang.IllegalArgumentException: serviceClass must be specified at org.apache.camel.impl.ProducerCache.doGetProducer(ProducerCache.java:395) Caused by: java.lang.IllegalArgumentException: serviceClass must be specified at org.apache.camel.util.ObjectHelper.notNull(ObjectHelper.java:294) For you reference here is my wsdl file.(http://localhost:8080/HelloWeb/Hello?wsdl) - ?xml version=1.0 ?wsdl:definitions xmlns:xsd=http://www.w3.org/2001/XMLSchema; xmlns:wsdl=http://schemas.xmlsoap.org/wsdl/; xmlns:tns=http://server.com/; xmlns:soap=http://schemas.xmlsoap.org/wsdl/soap/; xmlns:ns1=http://schemas.xmlsoap.org/soap/http; name=HelloFirstImplService targetNamespace=http://server.com/; wsdl:types xs:schema xmlns:xs=http://www.w3.org/2001/XMLSchema; xmlns:tns=http://server.com/; elementFormDefault=unqualified targetNamespace=http://server.com/; version=1.0 xs:element name=myHello type=tns:myHello/xs:element xs:element name=myHelloResponse type=tns:myHelloResponse/xs:element xs:complexType name=myHello xs:sequence xs:element minOccurs=0 name=arg0 type=xs:string/xs:element /xs:sequence /xs:complexType xs:complexType name=myHelloResponse xs:sequence xs:element minOccurs=0 name=return type=xs:string/xs:element /xs:sequence /xs:complexType /xs:schema /wsdl:types wsdl:message name=myHelloResponse wsdl:part element=tns:myHelloResponse name=parameters /wsdl:part /wsdl:message wsdl:message name=myHello wsdl:part element=tns:myHello name=parameters /wsdl:part /wsdl:message wsdl:portType name=HelloFirst wsdl:operation name=myHello wsdl:input message=tns:myHello name=myHello /wsdl:input wsdl:output message=tns:myHelloResponse name=myHelloResponse /wsdl:output /wsdl:operation /wsdl:portType wsdl:binding name=HelloFirstImplServiceSoapBinding type=tns:HelloFirst soap:binding style=document transport=http://schemas.xmlsoap.org/soap/http;/soap:binding wsdl:operation name=myHello soap:operation soapAction= style=document/soap:operation wsdl:input name=myHello soap:body use=literal/soap:body /wsdl:input wsdl:output name=myHelloResponse soap:body use=literal/soap:body /wsdl:output /wsdl:operation /wsdl:binding wsdl:service name=HelloFirstImplService wsdl:port binding=tns:HelloFirstImplServiceSoapBinding name=HelloFirstImplPort soap:address location=http://localhost:8080/HelloWeb/Hello;/soap:address /wsdl:port /wsdl:service /wsdl:definitions What should I put in so that it will work 1) address 2) endpointName 3) serviceName 4) servicClass Thanks , Abhi -- View this message in context: http://camel.465427.n5.nabble.com/How-to-call-CXF-web-service-from-Camel-tp5729692p5729744.html Sent from the Camel - Users mailing list archive at Nabble.com.
Re: Intermittent test failures
I am facing the same issue but while deploying my containers to FUSE ESB I have 2 containers, out of which any one will fail loading the camel-context. No error appart from the INFO messages below. This issue is inconsistent (rarely both containers load successfully, most time only one will load). 2013-03-23 20:31:07,679 | INFO | -3.12.0-thread-1 | BlueprintCamelContext | e.camel.impl.DefaultCamelContext 1399 | 74 - org.apache.camel.camel-core - 2.10.0.fuse-71-047 | Apache Camel 2.10.0.fuse-71-047 (CamelContext: heartbeatMonitoringContext) is starting 2013-03-23 20:31:07,771 | INFO | -3.12.0-thread-1 | Activator | BundleTypeConverterLoader$Loader 352 | 74 - org.apache.camel.camel-core - 2.10.0.fuse-71-047 | Found 2 @Converter classes to load 2013-03-23 20:31:07,775 | INFO | -3.12.0-thread-1 | Activator | BundleTypeConverterLoader$Loader 352 | 74 - org.apache.camel.camel-core - 2.10.0.fuse-71-047 | Found 0 @Converter classes to load I have the below in my import-packages in both feature's pom.xmls org.osgi.service.blueprint;version=[1.0.0,2.0.0), and dependency groupIdorg.apache.camel/groupId artifactIdcamel-blueprint/artifactId scopeprovided/scope /dependency What am I doing wrong? Gives a feeling that FUSE ESB is not reliable :(
Re: Intermittent test failures
Hi Shency You should use the Fuse Forums to ask about Fuse products, and get help with these products. This is NOT the appropriate mailing list to post these kind of questions. This mailing list is for the public Apache Camel project, and not vendor products. And yeah I say that even as an employeer working for Red Hat, and working on the Fuse products. On Sat, Mar 23, 2013 at 9:53 PM, mostwanted shency.revind...@monitise.com wrote: I am facing the same issue but while deploying my containers to FUSE ESB I have 2 containers, out of which any one will fail loading the camel-context. No error appart from the INFO messages below. This issue is inconsistent (rarely both containers load successfully, most time only one will load). 2013-03-23 20:31:07,679 | INFO | -3.12.0-thread-1 | BlueprintCamelContext | e.camel.impl.DefaultCamelContext 1399 | 74 - org.apache.camel.camel-core - 2.10.0.fuse-71-047 | Apache Camel 2.10.0.fuse-71-047 (CamelContext: heartbeatMonitoringContext) is starting 2013-03-23 20:31:07,771 | INFO | -3.12.0-thread-1 | Activator | BundleTypeConverterLoader$Loader 352 | 74 - org.apache.camel.camel-core - 2.10.0.fuse-71-047 | Found 2 @Converter classes to load 2013-03-23 20:31:07,775 | INFO | -3.12.0-thread-1 | Activator | BundleTypeConverterLoader$Loader 352 | 74 - org.apache.camel.camel-core - 2.10.0.fuse-71-047 | Found 0 @Converter classes to load I have the below in my import-packages in both feature's pom.xmls org.osgi.service.blueprint;version=[1.0.0,2.0.0), and dependency groupIdorg.apache.camel/groupId artifactIdcamel-blueprint/artifactId scopeprovided/scope /dependency What am I doing wrong? Gives a feeling that FUSE ESB is not reliable :( -- Claus Ibsen - Red Hat, Inc. FuseSource is now part of Red Hat Email: cib...@redhat.com Web: http://fusesource.com Twitter: davsclaus Blog: http://davsclaus.com Author of Camel in Action: http://www.manning.com/ibsen
Re: Configure clientConnectionManager endpoint option in camel hhtp4
Hi, I was not using the #. That worked, thank you! Guillermo. -- View this message in context: http://camel.465427.n5.nabble.com/Configure-clientConnectionManager-endpoint-option-in-camel-hhtp4-tp5729558p5729751.html Sent from the Camel - Users mailing list archive at Nabble.com.
Upload file - How to pass InputStream to Camel's route
Hi everyone, lately, I was working on @POST Consumer which was able to upload a file( link http://camel.465427.n5.nabble.com/Send-file-via-POST-request-td5728674.html ). It was really challenging but it still has one bug. I am not able to directly upload file from my local drive. Firstly I have to upload file to server where Karaf runs and after that I pass a variable with path to this file and I don't like this approach I would like to pass the file as an InputStream to my route. I am aware of stream component but I think I am using different approach to use it. As you can notice at my route http://camel.465427.n5.nabble.com/Send-file-via-POST-request-td5728674.html I am using Apache's HTTP Client to perform the @POST request and now I can pass an InputStream to it. My question how can I pass InputStream to my route? Thanks -Br, Roman -- View this message in context: http://camel.465427.n5.nabble.com/Upload-file-How-to-pass-InputStream-to-Camel-s-route-tp5729752.html Sent from the Camel - Users mailing list archive at Nabble.com.
Re: Upload file - How to pass InputStream to Camel's route
To be more specific, on client side there is classic form for uploading files which sends data to my service via @GET request. I can handle variables but I don't now how to handle file which comes with variables. -Br, Roman -- View this message in context: http://camel.465427.n5.nabble.com/Upload-file-How-to-pass-InputStream-to-Camel-s-route-tp5729752p5729756.html Sent from the Camel - Users mailing list archive at Nabble.com.
Links to empty pages on website?
Here I am suggesting to my boss that if he wants event broadcast and monitoring systems he should seriously check out camel, and each of the news items on the home page links to a page with empty content. Not good! Can someone fix the content to look at least moderately professional? Thanks, James
Re: Cannot write null body to file error !
Christian, So in this case, a new file is being written into the target folder with the Content Camel Rocks. But am looking to move a file from the source folder to the destination... how can i do that? using quartz schedule ! Thank you, Remya On Fri, Mar 22, 2013 at 5:56 PM, Christian Mueller [via Camel] ml-node+s465427n5729705...@n5.nabble.com wrote: route id=simple from uri=quartz://src/data?cron=0+16+*+*+*+?/ log message=Writing message to Folder/ setBodyconstantCamel rocks/constant/setBody to uri=file:C:\Data\FuseJars\messages/ /route Best, Christian On Fri, Mar 22, 2013 at 10:15 PM, bru1900 [hidden email]http://user/SendEmail.jtp?type=nodenode=5729705i=0 wrote: Am sorry about my lack of understanding. But by adding setBodyconstantCamel rocks/constant/setBody to the file endpoint you mean? which file? This is my context file(that am executing) and the other is my msg file ( present in src/data) On Fri, Mar 22, 2013 at 5:07 PM, Christian Mueller [via Camel] [hidden email] http://user/SendEmail.jtp?type=nodenode=5729705i=1 wrote: By using quartz://src/data it looks like you want route messages from the src/data folder. But in this case src is the timer group name and data is the timer name. And the quartz component sends an empty message (with a null body). That's what the file component complians. If you add something like: setBodyconstantCamel rocks/constant/setBody before your file endpoint, it should work... Best, Christian On Fri, Mar 22, 2013 at 9:50 PM, bru1900 [hidden email] http://user/SendEmail.jtp?type=nodenode=5729701i=0 wrote: I did look at these documents, in one of the examples, the suggested was from(quartz://myGroup/myTimerName?cron=0+0/5+12-18+?+*+MON-FRI). i am trying to do a similar thing in xml configuration. Where am i going wrong? On Fri, Mar 22, 2013 at 4:47 PM, Christian Mueller [via Camel] [hidden email] http://user/SendEmail.jtp?type=nodenode=5729701i=1 wrote: Your Quartz URI is not valid. You can read more about it at [1]. I think you are looking for the cron scheduled route policy [2]. [1] http://camel.apache.org/quartz.html [2] http://camel.apache.org/cronscheduledroutepolicy.html Best, Christian On Fri, Mar 22, 2013 at 8:45 PM, bru1900 [hidden email] http://user/SendEmail.jtp?type=nodenode=5729698i=0 wrote: I am newly learning how to set up routes in camel, and Quartz schedule them. I wrote a simple xml config, ?xml version=1.0 encoding=UTF-8? beans xmlns=http://www.springframework.org/schema/beans; xmlns:camel=http://camel.apache.org/schema/spring; xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance; xsi:schemaLocation= http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd; camelContext trace=false xmlns= http://camel.apache.org/schema/spring route id=simple from uri=quartz://src/data?cron=0+16+*+*+*+?/ log message=Moving message to Folder/ to uri=file:C:\Data\FuseJars\messages/ /route /camelContext /beans The simple file transfer works, but when i added the scheduling part am getting the following error. Any help will be highly appreciated. [artzScheduler-camel-1_Worker-5] QuartzEndpoint ERROR Error processing exchange. Exchange[Message: [Body is null]]. Caused by: [org.quartz.JobExecutionException - org.apache.camel.component.file.GenericFileOperationFailedException: Cannot write null body to file: C:\Data\FuseJars\messages\ID-CGL-R8Y2AEZ-64638-1363878882438-0-29] [artzScheduler-camel-1_Worker-5] JobRunShell INFO Job DEFAULT.quartz-endpoint1 threw a JobExecutionException: org.quartz.JobExecutionException: org.apache.camel.component.file.GenericFileOperationFailedException: Cannot write null body to file: C:\Data\FuseJars\messages\ID-CGL-R8Y2AEZ-64638-1363878882438-0-29 [See nested exception: org.apache.camel.component.file.GenericFileOperationFailedException: Cannot write null body to file: C:\Data\FuseJars\messages\ID-CGL-R8Y2AEZ-64638-1363878882438-0-29] at org.apache.camel.component.quartz.QuartzEndpoint.onJobExecute(QuartzEndpoint.java:117)[camel-quartz-2.10.0.fuse-71-047.jar:2.10.0.fuse-71-047] at
Re: Cannot write null body to file error !
Hi, first you need a basic understanding of the route parts (endpoints) you are using. If I understand you correct you have files in your source directory which you want to move to a destination directory at a given time?! Then you have three alternatives how to archive this. 1. poll a directory with the file consumer endpoint from uri=file://src/data/ to uri=file:C:\Data\FuseJars\messages/ That would move all files which appears in the src folder to the messages folder. If you now want to move the files on a specified time, you can only start the route at that time. For that have a look at: http://camel.apache.org/how-can-i-stop-a-route-from-a-route.html 2. Your problem is, that the body of the message has to contain the file content you want to move. The quartz consumer endpoint you use just sends out an empty body like Christian already explained. To set the content of the messagebody to the filecontent you can use a pollenrich. Have a look here: http://camel.apache.org/content-enricher.html then your route would look similar to: from uri=quartz://myQuarzJob?cron=0+16+*+*+*+?/ log message=Writing message to Folder/ pollEnrich uri=file://src/data?fileName=data.txt/ to uri=file:C:\Data\FuseJars\messages/ 3. Use a java bean which moves the files with pure java code from uri=quartz://myQuarzJob?cron=0+16+*+*+*+?/ to uri=bean:fileMover/ For how to use beans in camel have a look here: http://camel.apache.org/bean.html I hope this helps understanding how camel works. I also can recommend the book camel in action which gives a good overview of how camel works and dives you into the different aspects of using camel. regards, Marco Am 25.03.2013 15:34, schrieb bru1900: Christian, So in this case, a new file is being written into the target folder with the Content Camel Rocks. But am looking to move a file from the source folder to the destination... how can i do that? using quartz schedule ! Thank you, Remya On Fri, Mar 22, 2013 at 5:56 PM, Christian Mueller [via Camel] ml-node+s465427n5729705...@n5.nabble.com wrote: route id=simple from uri=quartz://src/data?cron=0+16+*+*+*+?/ log message=Writing message to Folder/ setBodyconstantCamel rocks/constant/setBody to uri=file:C:\Data\FuseJars\messages/ /route Best, Christian On Fri, Mar 22, 2013 at 10:15 PM, bru1900 [hidden email]http://user/SendEmail.jtp?type=nodenode=5729705i=0 wrote: Am sorry about my lack of understanding. But by adding setBodyconstantCamel rocks/constant/setBody to the file endpoint you mean? which file? This is my context file(that am executing) and the other is my msg file ( present in src/data) On Fri, Mar 22, 2013 at 5:07 PM, Christian Mueller [via Camel] [hidden email] http://user/SendEmail.jtp?type=nodenode=5729705i=1 wrote: By using quartz://src/data it looks like you want route messages from the src/data folder. But in this case src is the timer group name and data is the timer name. And the quartz component sends an empty message (with a null body). That's what the file component complians. If you add something like: setBodyconstantCamel rocks/constant/setBody before your file endpoint, it should work... Best, Christian On Fri, Mar 22, 2013 at 9:50 PM, bru1900 [hidden email] http://user/SendEmail.jtp?type=nodenode=5729701i=0 wrote: I did look at these documents, in one of the examples, the suggested was from(quartz://myGroup/myTimerName?cron=0+0/5+12-18+?+*+MON-FRI). i am trying to do a similar thing in xml configuration. Where am i going wrong? On Fri, Mar 22, 2013 at 4:47 PM, Christian Mueller [via Camel] [hidden email] http://user/SendEmail.jtp?type=nodenode=5729701i=1 wrote: Your Quartz URI is not valid. You can read more about it at [1]. I think you are looking for the cron scheduled route policy [2]. [1] http://camel.apache.org/quartz.html [2] http://camel.apache.org/cronscheduledroutepolicy.html Best, Christian On Fri, Mar 22, 2013 at 8:45 PM, bru1900 [hidden email] http://user/SendEmail.jtp?type=nodenode=5729698i=0 wrote: I am newly learning how to set up routes in camel, and Quartz schedule them. I wrote a simple xml config, ?xml version=1.0 encoding=UTF-8? beans xmlns=http://www.springframework.org/schema/beans; xmlns:camel=http://camel.apache.org/schema/spring; xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance; xsi:schemaLocation= http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd; camelContext trace=false xmlns= http://camel.apache.org/schema/spring route id=simple from uri=quartz://src/data?cron=0+16+*+*+*+?/ log message=Moving message to Folder/ to uri=file:C:\Data\FuseJars\messages/ /route /camelContext /beans The simple file transfer works, but when i added
SMPP stop route problem
Hello, like I explained in a previous post I'm looking for recommendations about how to stop a route listening for sms messages. Currently I'm stopping the route using the camel context camelContext.stopRoute(routeId); But doing so I'm losing some messages : Here is the description of the problem from the guys at smsc side : My application returns an error code FF (Hex) or 255 (Dec) before unbinding. Then SMSc will mark the message as an “invalid” and all next messages which will be sent towards the same destination MSISDN will be put automatically to “undeliverable” and no delivery attempt will be made until the application connects again and starts accepting messages again for this destination MSISDN. As error code FF or 255 is not according the SMPP specifications, the SMSc will consider it as a permanent error (241). -- View this message in context: http://camel.465427.n5.nabble.com/SMPP-stop-route-problem-tp5729769.html Sent from the Camel - Users mailing list archive at Nabble.com.
Re: How can I perform immediate shutdown of a context and all it's routes and services, etc.?
Claus, Ok, that worked - thanks a lot. BTW, the unit test is for testing custom RoutePolicy. The route in the test looks like: from(seda:foo).routeId(foo).noAutoStartup().routePolicy(policy) .loop(10).copy().delay(1000) .log(*** loop ${property.CamelLoopIndex}) .to(mock:foo); The RoutePolicy suspends the route, then resume it after a period of time - it performs this suspend/resume cycle in a loop. I notice that this route, using the loop() method only does the 10 iterations and does not start from the top again after being resumed, which I guess I should have expected. Is there a way to restart the route from the top upon resuming? Or do you recommend any other busy work kind of route to use for RoutePolicy testing? Thanks, Chris On Sat, Mar 23, 2013 at 4:02 AM, Claus Ibsen claus.ib...@gmail.com wrote: Hi Just set the shutdown timeout to 1 milli second (or 1 sec) etc. And just call stop on CamelContext. And if you extend the CamelTestSupport classes for your unit tests. There may be a method you can override and return 1 to indiciate 1 sec timeout. On Fri, Mar 22, 2013 at 5:23 PM, Chris Wolf cwolf.a...@gmail.com wrote: I am implementing some unit tests and if things go wrong I just want to shutdown ASAP without regard for inconsistent states, etc. There's no easy hook in DefaultShutDownStrategy to do that because you need to know the route startup order, so I ended up with this convoluted code (that I kick off in a separate thread). It doesn't work, BTW. DefaultRouteStartupOrder rsuo = null; int startOrder = 0; ListRouteStartupOrder suo = new ArrayListRouteStartupOrder(); ListRoute routes = context.getRoutes(); for (Route route : routes) { ListService services = route.getServices(); for (Service service : services) { if (service instanceof RouteService) { rsuo = new DefaultRouteStartupOrder(startOrder, route, (RouteService) service); suo.add(rsuo); } } startOrder++; } ShutdownStrategy sds = context.getShutdownStrategy(); sds.shutdownForced(context, suo); I know there must be an easier way, but I haven't found such. Any ideas? Thanks, Chris -- Claus Ibsen - Red Hat, Inc. FuseSource is now part of Red Hat Email: cib...@redhat.com Web: http://fusesource.com Twitter: davsclaus Blog: http://davsclaus.com Author of Camel in Action: http://www.manning.com/ibsen
Re: SMPP stop route problem
I don't know what your overall route looks like, but I think you will need to tell an upstream messaging component to stop accepting new messages, first, before calling context.stopRoute(rid) and also configure the shutdown strategy to allow sufficient time to process what was already in the queue: ShutdownStrategy sds = context.getShutdownStrategy(); sds.setTimeout(120); //== 2 minutes On Mon, Mar 25, 2013 at 11:14 AM, fclose f...@closebase.com wrote: Hello, like I explained in a previous post I'm looking for recommendations about how to stop a route listening for sms messages. Currently I'm stopping the route using the camel context camelContext.stopRoute(routeId); But doing so I'm losing some messages : Here is the description of the problem from the guys at smsc side : My application returns an error code FF (Hex) or 255 (Dec) before unbinding. Then SMSc will mark the message as an “invalid” and all next messages which will be sent towards the same destination MSISDN will be put automatically to “undeliverable” and no delivery attempt will be made until the application connects again and starts accepting messages again for this destination MSISDN. As error code FF or 255 is not according the SMPP specifications, the SMSc will consider it as a permanent error (241). -- View this message in context: http://camel.465427.n5.nabble.com/SMPP-stop-route-problem-tp5729769.html Sent from the Camel - Users mailing list archive at Nabble.com.
Re: Upload file - How to pass InputStream to Camel's route
Hi Roman, Yes, this is doable and is in fact quite simple. Just add an argument of type DataHandler or InputStream to the method signature, and annotate it with @Multipart, e.g. @GET @Path(/{myServerHost}/upload) @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.MULTIPART_FORM_DATA) public Response uploadFile(@PathParam(myHost) String knowledgetreeHost, @QueryParam(myPort) String knowledgetreePort, @QueryParam(user) String user, @QueryParam(password) String password, @QueryParam(file) String file, @Multipart(file_binary) DataHandler binary) { } Make sure your request is a standard HTTP Multipart request that contains a body part with name = file_binary. More info here: http://cxf.apache.org/docs/jax-rs-multiparts.html. Regards, *Raúl Kripalani* Enterprise Architect, Open Source Integration specialist, Program Manager | Apache Camel Committer http://about.me/raulkripalani | http://www.linkedin.com/in/raulkripalani http://blog.raulkr.net | twitter: @raulvk On Mon, Mar 25, 2013 at 1:51 PM, jamalissimo roman.janu...@gmail.comwrote: To be more specific, on client side there is classic form for uploading files which sends data to my service via @GET request. I can handle variables but I don't now how to handle file which comes with variables. -Br, Roman -- View this message in context: http://camel.465427.n5.nabble.com/Upload-file-How-to-pass-InputStream-to-Camel-s-route-tp5729752p5729756.html Sent from the Camel - Users mailing list archive at Nabble.com.
Re: Camel and Perf4j
I'll guess your are talking about ExchangeSentEvent. Then the starting point will be ExchangeSendingEvent? For what I remember, I tried that. I wasn't working either but a can try again just to make sure. The Tracer and Backlogtracer doesn't seem to provide the metrics I want (or any metrics at all). However, I can parse the log to do my own metrics. That's pretty much what I'm doing right now. I tried hawt.io. It gives a nice view of the the routes but when looking at the metrics, it's pretty much the same thing as JMX. camelwatch is better. I have a dashboard with load average and inflight. Not exactly what I want but I could get to something with a bit of hacking. I must say I wasn't expecting it would be that complex to get my metrics. I'm basically interested in a dashboard of my routes with: - Mean processing time. 95%, 99% percentile - Messages per seconds - Be able to reset the statistics easily - Current inflight - Refresh automatically On 15 March 2013 15:26, Claus Ibsen claus.ib...@gmail.com wrote: On Fri, Mar 15, 2013 at 3:20 PM, Henri Tremblay henri.tremb...@gmail.com wrote: Ok. That's what I thought. It is still strange since technically it is two routes (and the JMX does give me stats on both on them). Its not strange, there is events like ExchangeSentToEndpoint you can use instead etc. See all the event classes we have in the events package. Also you may consider looking at tracer for fine grained tracing / metrics collection http://camel.apache.org/tracer And the new backlog tracer in Camel 2.11 http://camel.apache.org/backlogtracer.html I'll look at the proposed tools and give you some feedback. Thanks! Henri On 15 March 2013 13:11, Claus Ibsen claus.ib...@gmail.com wrote: On Fri, Mar 15, 2013 at 12:48 PM, Henri Tremblay henri.tremb...@gmail.com wrote: Hi, I would like to use Camel with Perf4j. I know that Camel JMX already provide statistics but I would like to be able to easily see at once all my routes performance and be able generate nice graph. Perf4j allows me to do that quickly (you know another tool that will do the same with Camel?) Yes hawtio can monitor Camel apps. I suggest to take a look. In the upcoming 1.1 release there is going to be a new plugin for showing stats, us http://hawt.io/ And there is also a tool called CamelWatch http://sksamuel.github.com/camelwatch/ My first try was to extend EventNotifierSupport and react to ExchangeCreatedEvent and ExchangeCompletedEvent. Basically this: public void notify(EventObject event) throws Exception { Exchange exchange = (Exchange) event.getSource(); String tag = exchange.getFromRouteId() + - + exchange.getFromEndpoint(); if (event instanceof ExchangeCreatedEvent) { StopWatch watch = new Slf4JStopWatch(tag); exchange.setProperty(STOP_WATCH_KEY + tag, watch); } else if (event instanceof ExchangeCompletedEvent) { StopWatch watch = (StopWatch) exchange.removeProperty(STOP_WATCH_KEY + tag); watch.stop(); } } Of course it doesn't really work. There is no way to have the route id it seems. Or at least I have strange result. My routes are: from(sql:...).setRouteId(a).to(direct-foo); from(direct:foo).setRouteId(b).to(http:...); And instead of getting something like Created a Completed a Created b Completed b I receive something like Created a-null Created a-a Completed a-a Completed a-a Any idea why it behaves like this and what I can do? Thanks Henri You should likely only react to created / completed events. And that is why you may get a null in the from route. And when you use the direct component its NOT creating a new Exchange but routing the existing exchange. And hence why you wont see events for creating / completed from route b. -- Claus Ibsen - Red Hat, Inc. FuseSource is now part of Red Hat Email: cib...@redhat.com Web: http://fusesource.com Twitter: davsclaus Blog: http://davsclaus.com Author of Camel in Action: http://www.manning.com/ibsen -- Claus Ibsen - Red Hat, Inc. FuseSource is now part of Red Hat Email: cib...@redhat.com Web: http://fusesource.com Twitter: davsclaus Blog: http://davsclaus.com Author of Camel in Action: http://www.manning.com/ibsen
Re: Camel and Perf4j
On Mon, Mar 25, 2013 at 5:44 PM, Henri Tremblay henri.tremb...@gmail.com wrote: I'll guess your are talking about ExchangeSentEvent. Then the starting point will be ExchangeSendingEvent? For what I remember, I tried that. I wasn't working either but a can try again just to make sure. The Tracer and Backlogtracer doesn't seem to provide the metrics I want (or any metrics at all). However, I can parse the log to do my own metrics. That's pretty much what I'm doing right now. I tried hawt.io. It gives a nice view of the the routes but when looking at the metrics, it's pretty much the same thing as JMX. camelwatch is better. I have a dashboard with load average and inflight. Not exactly what I want but I could get to something with a bit of hacking. I must say I wasn't expecting it would be that complex to get my metrics. I'm basically interested in a dashboard of my routes with: - Mean processing time. 95%, 99% percentile - Messages per seconds - Be able to reset the statistics easily - Current inflight - Refresh automatically Well the next release of hawtio 1.1 have a Kibana dashboard http://kibana.org/index.html And has a ton of metrics what you talk about above. On 15 March 2013 15:26, Claus Ibsen claus.ib...@gmail.com wrote: On Fri, Mar 15, 2013 at 3:20 PM, Henri Tremblay henri.tremb...@gmail.com wrote: Ok. That's what I thought. It is still strange since technically it is two routes (and the JMX does give me stats on both on them). Its not strange, there is events like ExchangeSentToEndpoint you can use instead etc. See all the event classes we have in the events package. Also you may consider looking at tracer for fine grained tracing / metrics collection http://camel.apache.org/tracer And the new backlog tracer in Camel 2.11 http://camel.apache.org/backlogtracer.html I'll look at the proposed tools and give you some feedback. Thanks! Henri On 15 March 2013 13:11, Claus Ibsen claus.ib...@gmail.com wrote: On Fri, Mar 15, 2013 at 12:48 PM, Henri Tremblay henri.tremb...@gmail.com wrote: Hi, I would like to use Camel with Perf4j. I know that Camel JMX already provide statistics but I would like to be able to easily see at once all my routes performance and be able generate nice graph. Perf4j allows me to do that quickly (you know another tool that will do the same with Camel?) Yes hawtio can monitor Camel apps. I suggest to take a look. In the upcoming 1.1 release there is going to be a new plugin for showing stats, us http://hawt.io/ And there is also a tool called CamelWatch http://sksamuel.github.com/camelwatch/ My first try was to extend EventNotifierSupport and react to ExchangeCreatedEvent and ExchangeCompletedEvent. Basically this: public void notify(EventObject event) throws Exception { Exchange exchange = (Exchange) event.getSource(); String tag = exchange.getFromRouteId() + - + exchange.getFromEndpoint(); if (event instanceof ExchangeCreatedEvent) { StopWatch watch = new Slf4JStopWatch(tag); exchange.setProperty(STOP_WATCH_KEY + tag, watch); } else if (event instanceof ExchangeCompletedEvent) { StopWatch watch = (StopWatch) exchange.removeProperty(STOP_WATCH_KEY + tag); watch.stop(); } } Of course it doesn't really work. There is no way to have the route id it seems. Or at least I have strange result. My routes are: from(sql:...).setRouteId(a).to(direct-foo); from(direct:foo).setRouteId(b).to(http:...); And instead of getting something like Created a Completed a Created b Completed b I receive something like Created a-null Created a-a Completed a-a Completed a-a Any idea why it behaves like this and what I can do? Thanks Henri You should likely only react to created / completed events. And that is why you may get a null in the from route. And when you use the direct component its NOT creating a new Exchange but routing the existing exchange. And hence why you wont see events for creating / completed from route b. -- Claus Ibsen - Red Hat, Inc. FuseSource is now part of Red Hat Email: cib...@redhat.com Web: http://fusesource.com Twitter: davsclaus Blog: http://davsclaus.com Author of Camel in Action: http://www.manning.com/ibsen -- Claus Ibsen - Red Hat, Inc. FuseSource is now part of Red Hat Email: cib...@redhat.com Web: http://fusesource.com Twitter: davsclaus Blog: http://davsclaus.com Author of Camel in Action: http://www.manning.com/ibsen -- Claus Ibsen - Red Hat, Inc. FuseSource is now part of Red Hat Email: cib...@redhat.com Web: http://fusesource.com Twitter: davsclaus Blog: http://davsclaus.com Author of Camel in Action: http://www.manning.com/ibsen
Re: How to call CXF web service from Camel
Sorry.The dataFormat has to be PAYLOAD or MESSAGE.you can look at what that is on http://camel.apache.org/cxf.html .if you want POJO you should include stub interface as serviceClass.btw the port name is wrong. It should be tns:HelloFirstImplServiceSoapBinding where tns should declared in namespace. -- View this message in context: http://camel.465427.n5.nabble.com/How-to-call-CXF-web-service-from-Camel-tp5729692p5729791.html Sent from the Camel - Users mailing list archive at Nabble.com.
Re: SMPP stop route problem
my route looks like this : camel:endpoint id=smscReceiving uri=smpp://${smpp.user}@${smpp.server}?password=${smpp.password} ... / camel:route id=smsReceivingRoute autoStartup=false errorHandlerRef=smsReceivingErrorHandler camel:from ref=smscReceiving/ camel:to ref=smsProcessing/ /camel:route I put logging on trace when I call context.stopRoute(rid); and this is what I get DEBUG There are 1 routes to shutdown TRACE Shutting down route: smsReceivingRoute with options [Default,CompleteCurrentTaskOnly] TRACE Suspending: SmppConsumer[smpp://***] TRACE Suspend complete for: SmppConsumer[smpp://**] DEBUG Route: smsReceivingRoute suspended and shutdown deferred, was consuming from: Endpoint[smpp://***] TRACE Shutting down: SmppConsumer[smpp://] DEBUG Disconnecting from: smpp://... DEBUG Stopping consumer: SmppConsumer[smpp://] DEBUG Activity notified INFO PDUReaderWorker stop DEBUG unbind response received INFO Disconnected from: smpp:// TRACE Shutdown complete for: SmppConsumer[smpp://] INFO Route: smsReceivingRoute shutdown complete, was consuming from: Endpoint[smpp://] INFO Graceful shutdown of 1 routes completed in 1 seconds INFO Route: smsReceivingRoute is stopped, was consuming from: Endpoint[smpp://] INFO Status Started waiting for stopped. INFO EnquireLinkSender stop -- View this message in context: http://camel.465427.n5.nabble.com/SMPP-stop-route-problem-tp5729769p5729799.html Sent from the Camel - Users mailing list archive at Nabble.com.
Question about the implementation of routepolicy.quartz.ScheduledRoutePolicy
I am looking at code in org.apache.camel.routepolicy.quartz.ScheduledRoutePolicy - the code that starts/stops/resumes/suspends the route it is a policy for. The question is why is it separately acting on the Consumer? I thought if you call CamelContext.suspendRoute(route) and/or CamelContext.resumeRoute(route), that all the components in the route are suspended/resumed as well? Secondly, why does this code assume there is a Consumer? What if the route has a Producer? I am not being critical - I just want to understand, generally how route suspend/resume works since I am implementing a similar RoutePolicy. Thanks, -Chris protected void onJobExecute(Action action, Route route) throws Exception { [...] } else if (action == Action.SUSPEND) { if (routeStatus == ServiceStatus.Started) { stopConsumer(route.getConsumer()); } else { LOG.warn(Route is not in a started state and cannot be suspended. The current route state is {}, routeStatus); } } else if (action == Action.RESUME) { if (routeStatus == ServiceStatus.Started) { if (ServiceHelper.isSuspended(route.getConsumer())) { startConsumer(route.getConsumer()); } else { LOG.warn(The Consumer {} is not suspended and cannot be resumed., route.getConsumer()); } [...]
Re: Cannot write null body to file error !
Am sorry, that worked just as i was looking for ! Thank you so much Christain and Marco. On Mon, Mar 25, 2013 at 3:57 PM, Remya Nambiar rarer...@gmail.com wrote: Marco, Thank you for these references. I have tried the first option you suggested before hand. Am trying to incorporate quartz scheduling into the similar way. I need to design a route, which moves file from a source directory to target directory, following a cron schedule. In the (2) option, a new file gets created with contents of the text file, but i need the actual file to be moved, like it would happen in option (1). On Mon, Mar 25, 2013 at 11:12 AM, Marco Westermann [via Camel] ml-node+s465427n5729766...@n5.nabble.com wrote: Hi, first you need a basic understanding of the route parts (endpoints) you are using. If I understand you correct you have files in your source directory which you want to move to a destination directory at a given time?! Then you have three alternatives how to archive this. 1. poll a directory with the file consumer endpoint from uri=file://src/data/ to uri=file:C:\Data\FuseJars\messages/ That would move all files which appears in the src folder to the messages folder. If you now want to move the files on a specified time, you can only start the route at that time. For that have a look at: http://camel.apache.org/how-can-i-stop-a-route-from-a-route.html 2. Your problem is, that the body of the message has to contain the file content you want to move. The quartz consumer endpoint you use just sends out an empty body like Christian already explained. To set the content of the messagebody to the filecontent you can use a pollenrich. Have a look here: http://camel.apache.org/content-enricher.html then your route would look similar to: from uri=quartz://myQuarzJob?cron=0+16+*+*+*+?/ log message=Writing message to Folder/ pollEnrich uri=file://src/data?fileName=data.txt/ to uri=file:C:\Data\FuseJars\messages/ 3. Use a java bean which moves the files with pure java code from uri=quartz://myQuarzJob?cron=0+16+*+*+*+?/ to uri=bean:fileMover/ For how to use beans in camel have a look here: http://camel.apache.org/bean.html I hope this helps understanding how camel works. I also can recommend the book camel in action which gives a good overview of how camel works and dives you into the different aspects of using camel. regards, Marco Am 25.03.2013 15:34, schrieb bru1900: Christian, So in this case, a new file is being written into the target folder with the Content Camel Rocks. But am looking to move a file from the source folder to the destination... how can i do that? using quartz schedule ! Thank you, Remya On Fri, Mar 22, 2013 at 5:56 PM, Christian Mueller [via Camel] [hidden email] http://user/SendEmail.jtp?type=nodenode=5729766i=0 wrote: route id=simple from uri=quartz://src/data?cron=0+16+*+*+*+?/ log message=Writing message to Folder/ setBodyconstantCamel rocks/constant/setBody to uri=file:C:\Data\FuseJars\messages/ /route Best, Christian On Fri, Mar 22, 2013 at 10:15 PM, bru1900 [hidden email] http://user/SendEmail.jtp?type=nodenode=5729705i=0 wrote: Am sorry about my lack of understanding. But by adding setBodyconstantCamel rocks/constant/setBody to the file endpoint you mean? which file? This is my context file(that am executing) and the other is my msg file ( present in src/data) On Fri, Mar 22, 2013 at 5:07 PM, Christian Mueller [via Camel] [hidden email] http://user/SendEmail.jtp?type=nodenode=5729705i=1 wrote: By using quartz://src/data it looks like you want route messages from the src/data folder. But in this case src is the timer group name and data is the timer name. And the quartz component sends an empty message (with a null body). That's what the file component complians. If you add something like: setBodyconstantCamel rocks/constant/setBody before your file endpoint, it should work... Best, Christian On Fri, Mar 22, 2013 at 9:50 PM, bru1900 [hidden email] http://user/SendEmail.jtp?type=nodenode=5729701i=0 wrote: I did look at these documents, in one of the examples, the suggested was from(quartz://myGroup/myTimerName?cron=0+0/5+12-18+?+*+MON-FRI). i am trying to do a similar thing in xml configuration. Where am i going wrong? On Fri, Mar 22, 2013 at 4:47 PM, Christian Mueller [via Camel] [hidden email] http://user/SendEmail.jtp?type=nodenode=5729701i=1 wrote: Your Quartz URI is not valid. You can read more about it at [1]. I think you are looking for the cron scheduled route policy [2]. [1] http://camel.apache.org/quartz.html [2] http://camel.apache.org/cronscheduledroutepolicy.html Best, Christian On Fri, Mar 22, 2013 at 8:45 PM, bru1900 [hidden email] http://user/SendEmail.jtp?type=nodenode=5729698i=0 wrote: I am
Re: Links to empty pages on website?
Which link do you talking about? Best, Christian Sent from a mobile device Am 25.03.2013 15:33 schrieb James Green james.mk.gr...@gmail.com: Here I am suggesting to my boss that if he wants event broadcast and monitoring systems he should seriously check out camel, and each of the news items on the home page links to a page with empty content. Not good! Can someone fix the content to look at least moderately professional? Thanks, James
Re: Links to empty pages on website?
Every one in the news section. Larry On Mon, Mar 25, 2013 at 3:29 PM, Christian Müller christian.muel...@gmail.com wrote: Which link do you talking about? Best, Christian Sent from a mobile device Am 25.03.2013 15:33 schrieb James Green james.mk.gr...@gmail.com: Here I am suggesting to my boss that if he wants event broadcast and monitoring systems he should seriously check out camel, and each of the news items on the home page links to a page with empty content. Not good! Can someone fix the content to look at least moderately professional? Thanks, James
Re: Cannot write null body to file error !
http://camel.apache.org/cronscheduledroutepolicy.html is what you are looking for... Sent from a mobile device Am 25.03.2013 21:04 schrieb bru1900 rarer...@gmail.com: Am sorry, that worked just as i was looking for ! Thank you so much Christain and Marco. On Mon, Mar 25, 2013 at 3:57 PM, Remya Nambiar rarer...@gmail.com wrote: Marco, Thank you for these references. I have tried the first option you suggested before hand. Am trying to incorporate quartz scheduling into the similar way. I need to design a route, which moves file from a source directory to target directory, following a cron schedule. In the (2) option, a new file gets created with contents of the text file, but i need the actual file to be moved, like it would happen in option (1). On Mon, Mar 25, 2013 at 11:12 AM, Marco Westermann [via Camel] ml-node+s465427n5729766...@n5.nabble.com wrote: Hi, first you need a basic understanding of the route parts (endpoints) you are using. If I understand you correct you have files in your source directory which you want to move to a destination directory at a given time?! Then you have three alternatives how to archive this. 1. poll a directory with the file consumer endpoint from uri=file://src/data/ to uri=file:C:\Data\FuseJars\messages/ That would move all files which appears in the src folder to the messages folder. If you now want to move the files on a specified time, you can only start the route at that time. For that have a look at: http://camel.apache.org/how-can-i-stop-a-route-from-a-route.html 2. Your problem is, that the body of the message has to contain the file content you want to move. The quartz consumer endpoint you use just sends out an empty body like Christian already explained. To set the content of the messagebody to the filecontent you can use a pollenrich. Have a look here: http://camel.apache.org/content-enricher.html then your route would look similar to: from uri=quartz://myQuarzJob?cron=0+16+*+*+*+?/ log message=Writing message to Folder/ pollEnrich uri=file://src/data?fileName=data.txt/ to uri=file:C:\Data\FuseJars\messages/ 3. Use a java bean which moves the files with pure java code from uri=quartz://myQuarzJob?cron=0+16+*+*+*+?/ to uri=bean:fileMover/ For how to use beans in camel have a look here: http://camel.apache.org/bean.html I hope this helps understanding how camel works. I also can recommend the book camel in action which gives a good overview of how camel works and dives you into the different aspects of using camel. regards, Marco Am 25.03.2013 15:34, schrieb bru1900: Christian, So in this case, a new file is being written into the target folder with the Content Camel Rocks. But am looking to move a file from the source folder to the destination... how can i do that? using quartz schedule ! Thank you, Remya On Fri, Mar 22, 2013 at 5:56 PM, Christian Mueller [via Camel] [hidden email] http://user/SendEmail.jtp?type=nodenode=5729766i=0 wrote: route id=simple from uri=quartz://src/data?cron=0+16+*+*+*+?/ log message=Writing message to Folder/ setBodyconstantCamel rocks/constant/setBody to uri=file:C:\Data\FuseJars\messages/ /route Best, Christian On Fri, Mar 22, 2013 at 10:15 PM, bru1900 [hidden email] http://user/SendEmail.jtp?type=nodenode=5729705i=0 wrote: Am sorry about my lack of understanding. But by adding setBodyconstantCamel rocks/constant/setBody to the file endpoint you mean? which file? This is my context file(that am executing) and the other is my msg file ( present in src/data) On Fri, Mar 22, 2013 at 5:07 PM, Christian Mueller [via Camel] [hidden email] http://user/SendEmail.jtp?type=nodenode=5729705i=1 wrote: By using quartz://src/data it looks like you want route messages from the src/data folder. But in this case src is the timer group name and data is the timer name. And the quartz component sends an empty message (with a null body). That's what the file component complians. If you add something like: setBodyconstantCamel rocks/constant/setBody before your file endpoint, it should work... Best, Christian On Fri, Mar 22, 2013 at 9:50 PM, bru1900 [hidden email] http://user/SendEmail.jtp?type=nodenode=5729701i=0 wrote: I did look at these documents, in one of the examples, the suggested was from(quartz://myGroup/myTimerName?cron=0+0/5+12-18+?+*+MON-FRI). i am trying to do a similar thing in xml configuration. Where am i going wrong? On Fri, Mar 22, 2013 at 4:47 PM, Christian Mueller [via Camel] [hidden email] http://user/SendEmail.jtp?type=nodenode=5729701i=1 wrote: Your Quartz URI is not valid. You can read more about it
Re: Links to empty pages on website?
Thanks for reporting. I opened a JIRA to track this [1]. It has something to do with our WIKI export. In the meantime, you can read the news also from our WIKI page [2]. [1] https://issues.apache.org/jira/browse/CAMEL-6210 [2] https://cwiki.apache.org/confluence/display/CAMEL/Index Sorry for the inconvenience, Christian On Mon, Mar 25, 2013 at 10:31 PM, Larry Meadors larry.mead...@gmail.comwrote: Every one in the news section. Larry On Mon, Mar 25, 2013 at 3:29 PM, Christian Müller christian.muel...@gmail.com wrote: Which link do you talking about? Best, Christian Sent from a mobile device Am 25.03.2013 15:33 schrieb James Green james.mk.gr...@gmail.com: Here I am suggesting to my boss that if he wants event broadcast and monitoring systems he should seriously check out camel, and each of the news items on the home page links to a page with empty content. Not good! Can someone fix the content to look at least moderately professional? Thanks, James
Problem with mqtt component
Hi everyone, I have a from(mqtt).to(mqtt) route but i can't get it work. Here are my route definitions: camel:route id=orderRequestCreatorRoute camel:from uri=mqtt:cheese?subscribeTopicName=CP/#/ camel:process ref=myProcessor/ camel:to uri=mqtt:cheese?publishTopicName=DP/Device1/ /camel:route This doesn't work, the processor prints a log message but i can't consume on DP/Device1 topic. But when i replace the consumer by a file endpoint it works : camel:route id=orderRequestCreatorRoute camel:from uri=file://inbox/ camel:process ref=myProcessor/ camel:to uri=mqtt:cheese?publishTopicName=DP/Device1/ /camel:route Does someone has an idea about it? Thanks in advance. Cheers, Kod -- View this message in context: http://camel.465427.n5.nabble.com/Problem-with-mqtt-component-tp5729820.html Sent from the Camel - Users mailing list archive at Nabble.com.