Search code examples
spring-bootapache-cameljettydropwizardhl7

Is a HTTP server(Jetty) required for hosting camel routes processing HL7 messages


I want to create a HL7 listener in camel and process the HL7 messages I receive. I was planning to use SpringBoot/dropwizard along with camel for this purpose. The reason dropwizard is already used in my company for creating restful API's and I thought of reusing them for creating Camel routes as microservices also. My questions are,

  1. HL7 messages are received using MLLP(Mina or Netty) over TCP. There isnt any HTTP involved. So is there any purpose of using a server like Jetty? Is it better to use Camel standlone?

  2. If there is not any HTTP requests/listeners involved in my camel application, is there any use of me going for dropwizard/Springboot, as these frameworks were mainly created for creating Restful API's i.e for HTTP traffic?


Solution

  • Ad 1)

    Yes HTTP is not involved and Camel uses Netty (preferred) or Mina. Mind there is camel-mllp which is a more hardened than camel-hl7 which has some more advanced HL7 corner cases fixed. See the readme file: https://github.com/apache/camel/tree/master/components/camel-mllp

    Ad 2)

    You can opt out HTTP in spring boot, just dont have its -starter-web dependency and its a standalone non HTTP app. Just mind that you may need to turn on camel.springboot.main-run-controller=true in the application.properties to keep the JVM running.

    And by using Spring Boot or DropWizard etc you have a similar deployment and packaging as other apps, instead of having to create something yourself.