Hi, Claus.  Thank you for your reply and for your feedback on my current
implementation.  I am willing to change it to be simpler/easier/more
foolproof.  What transport would you suggest that I use?  I would be fine
with switching to a JMS queue, or some other component.  I still need to
continue to deploy multiple spring boot applications to a single tomcat
instance (at least for now).

Thanks again,
Steve

On Fri, Aug 7, 2020 at 3:22 AM Claus Ibsen <claus.ib...@gmail.com> wrote:

> Hi
>
> You would need more JARs than just camel-core, such as camel-vm etc as
> well, and many others.
> And this is really IMHO a bad practice on tomcat to mess with
> classloading using this shared lib.
>
>
>
>
>
>
> On Thu, Aug 6, 2020 at 4:46 PM Steve973 <steve...@gmail.com> wrote:
> >
> > We have an application stack, deployed in Tomcat, that consists of
> several
> > Spring Boot applications. As part of our operations, we want to send some
> > messages to a vm endpoint, where a camel route will consume those
> messages
> > and then publish them to a JMS topic for any of the other Spring Boot
> > applications that are interested in messages on that topic.
> >
> > When I start the application stack, there are three spring boot apps that
> > utilize camel, and I see camel start properly in the logs. But when one
> of
> > the apps sends a message to the vm endpoint, the route that consumes from
> > that endpoint and routes the messages to the jms topic does not seem to
> get
> > that message. I have placed the camel-core jar in my tomcat lib
> directory.
> > In the spring boot maven plugin configuration, I have specified an
> > exclusion of the camel-core jar. Oddly enough, that jar is in the
> > WEB-INF/lib of the war anyway! So I have stopped Tomcat, removed that jar
> > from the exploded war, and restarted Tomcat, but that does not change the
> > behavior of the messaging.
> >
> > Here are the versions that we are using:
> >
> >    - Spring Boot 2.3.1
> >    - Camel 3.4.2
> >    - Tomcat 8.5.5
> >
> > The first spring boot app that links everything together, with the camel
> > route that consumes from the vm endpoint and produces that message on the
> > jms topic is our "routing engine". It uses camel-spring-boot-starter,
> > spring-boot-starter-artemis, camel-vm-starter, artemis-jms-server and
> > camel-jms-starter. Its RouteBuilder's configure method looks like this:
> >
> > from("vm:task")
> >     .log(LoggingLevel.WARN, "********** Received task message");
> >     .to("jms:topic:local.private.task")
> >     .routeId("taskToJms");
> >
> > The app that produces messages to the vm endpoint uses
> > camel-spring-boot-starter and camel-vm-starter. In that app, it has a
> > @Service class that receives a ProducerTemplate that is auto-wired in the
> > constructor. When the application invokes this component to send the
> > message, I see a line in the logs that says
> >
> > o.a.c.impl.engine.DefaultProducerCache (169) - >>>> vm://task Exchange[]
> >
> > so it appears that the message is being produced and sent properly to the
> > vm endpoint. However, I see no indication that it has been
> > received/consumed in the routing engine's camel route, since the route's
> > log line is not logging anything, and since I see no other indications of
> > receiving the message in the log. The strange thing is that I am not
> > getting the error of not having any consumers on the vm:task endpoint
> that
> > I was getting before I put the camel-core jar in tomcat's lib directory.
> >
> > Am I doing anything obviously wrong? How can I get the spring boot maven
> > plugin to really exclude camel-core? And why are the messages (sent to
> the
> > vm endpoint) not being consumed by the route in the routing engine?
> Thanks
> > in advance for any help.
>
>
>
> --
> Claus Ibsen
> -----------------
> http://davsclaus.com @davsclaus
> Camel in Action 2: https://www.manning.com/ibsen2
>

Reply via email to