R.I.P. Apache Camel

  1. No debugging. Okay some of your program can be debugged, but the core of any Camel program is the route definitions part, which lives in a configuration method invoked only at start-up. So you can’t place (useful) break points in the core of your program. For me that is enough of a downside to never, ever, consider using this framework. In practice it has been an awful experience to find and fix problems. It is necessary to add extra logging and other debug code (I have a bean that dumps the current state to the console).
  2. Broad yet shallow, uninsightful documentation, 2 stars out of 5. Reads like it was written by a bot (and not a good one). Node’s documentation is just better, explains things well, 4 out of 5 stars. Part of what makes Node’s documentation so much better is you don’t have to change your thinking to understand it.
  3. Awkward “framework” code. Writing a simple if/else results in goofy code with “choice”, “when”, and “otherwise” keywords. Looping uses “split”, if your lucky. It can be awkward to just control the program flow.
  4. There is a message “body” that you need to implicitly keep track. You can’t just read the code, you have to carefully inspect it to see if the body changed somewhere without someone leaving a comment (there are no variable declarations or typed parameters). In Node what do you do? Just read the code, nothing mysterious.
  5. Strings and more strings. Much of defining routes in Camel requires passing strings to methods, sometimes large strings, a hundred or more characters. Strings which are not checked at compile time, like they would be in other languages (like Typescript, which I use with Node). One tiny typo in one of these strings can cause the configuration call to fail at program start, with an annoying vague exception about a route not loading. Database calls are particularly a problem (and especially poorly documented to boot).

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store