camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Claus Ibsen <claus.ib...@gmail.com>
Subject Re: Sender - Bounc Camel routes using spring config
Date Sat, 05 Mar 2011 07:15:21 GMT
Hi

There is this JMS tutorial which has a client and server and sends data to/from
http://camel.apache.org/tutorial-jmsremoting.html

In your example you use "activemq" as scheme in your Camel routes.

And when you do that, then your ActiveMQComponent <bean> should have
the same id.
In one of your XML files it does not.

That mean Camel will use the default AMQComponent (with default
settings) which happens to be available since you embedded a local AMQ
broker as well. So that's why it tries port 61616 which is the default
port.


On Fri, Mar 4, 2011 at 10:03 PM, lone squirrely
<thelonesquirrely@gmail.com> wrote:
> Hey - I have tried to figure this problem out but I am still stuck!  I
> am trying to write a simple program pair that will just bounce strings
> around!  I have a simple "bounceService" and a simple "senderService".
>  The bounceService just needs to start a activemqBroker and hookup to
> some queue.  The other just connects from a different machine (or the
> same...) and sends a message.  It just wants to see that back.
>
> I am unsure if the messages are getting through.  Rather, I am pretty
> sure they aren't...
> If you could take a quick peek, it would be immensely helpful.
>
>
>
> First! the bouceService:
> --------------------------- SPRING APPLICATION CONTEXT
> -------------------------------------
> <?xml version="1.0" encoding="UTF-8"?>
> <beans xmlns="http://www.springframework.org/schema/beans"
>       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>       xmlns:context="http://www.springframework.org/schema/context"
>       xmlns:camel="http://camel.apache.org/schema/spring"
>       xmlns:amq="http://activemq.apache.org/schema/core"
>       xmlns:p="http://www.springframework.org/schema/p"
>       xsi:schemaLocation="
>        http://www.springframework.org/schema/beans
> http://www.springframework.org/schema/beans/spring-beans.xsd
>        http://www.springframework.org/schema/context
> http://www.springframework.org/schema/context/spring-context.xsd
>        http://activemq.apache.org/schema/core
> http://activemq.apache.org/schema/core/activemq-core.xsd
>        http://camel.apache.org/schema/spring
> http://camel.apache.org/schema/spring/camel-spring.xsd
> ">
>
>          <!--
>       xmlns:broker="http://activemq.apache.org/schema/core"
>           -->
>  <context:component-scan base-package="com" />
>  <context:property-placeholder location="classpath:properties/*.properties" />
>
>  <bean id="bounceService" class="com.service.BounceService">
>     <constructor-arg index="0"><ref bean="testCamelContext"
> /></constructor-arg>
>  </bean>
>
>  <camel:camelContext id="testCamelContext">
>    <!--
>    <camel:package>com.camel</camel:package>
>    -->
>    <camel:route id="SIMPLE_BOUNCE">
>      <camel:description>
>        Takes a message from the amq broker and puts turns it back around.
>      </camel:description>
>      <camel:from uri="activemq:test:bounce" />
>      <camel:bean ref="bounceService" method="bounceString" />
>    </camel:route>
>  </camel:camelContext>
>
>  <!-- Setup a broker for testing -->
>      <!--
>      <amq:transportConnector name="stomp" uri="tcp://localhost:61613" />
>      -->
>  <amq:broker persistent="false">
>    <amq:transportConnectors>
>      <amq:transportConnector name="openWire" uri="tcp://localhost:9091" />
>    </amq:transportConnectors>
>  </amq:broker>
>
>  <bean id="activemqBroker"
> class="org.apache.activemq.camel.component.ActiveMQComponent">
>    <property name="brokerURL" value="tcp://localhost:9091" />
>  </bean>
>
>  <!-- Traces flow of messages -->
>  <bean id="traceFormatter"
> class="org.apache.camel.processor.interceptor.DefaultTraceFormatter">
>    <property name="showBody" value="false" />
>    <property name="showBodyType" value="true" />
>    <property name="showBreadCrumb" value="false" />
>    <property name="maxChars" value="1000" />
>  </bean>
> </beans>
>
> --------------------------------------- THE bounceService
> --------------------------------------------
> package com.service;
>
> import org.apache.camel.CamelContext;
> import org.apache.camel.Handler;
> import org.apache.camel.ProducerTemplate;
> import org.apache.camel.Route;
> import org.springframework.stereotype.Service;
>
> @Service(value = "bounceService")
> public class BounceService {
>
>  public BounceService (CamelContext camelContext) {
>    System.out.println ("***************************************");
>
>    System.out.println ("Camel context: " + camelContext.getName ());
>    for (Route r : camelContext.getRoutes ()) {
>      System.out.println (r.getEndpoint ());
>    }
>
>    System.out.println ("***************************************");
>  }
>
>  @Handler
>  public String bounceString (String inStr) {
>    String outStr = "RET_" + inStr;
>
>    System.out.println ("---------------- START ----------------");
>    System.out.println ("Got this message: " + inStr);
>    System.out.println ("Returning this message " + outStr);
>    System.out.println ("----------------- END -----------------");
>
>    return outStr;
>  }
> }
>
>
> On to the senderService:
> ------------------------------------- SENDER SERVICE
> SPRING----------------------------------------
>
> <?xml version="1.0" encoding="UTF-8"?>
> <beans xmlns="http://www.springframework.org/schema/beans"
>       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>       xmlns:context="http://www.springframework.org/schema/context"
>       xmlns:camel="http://camel.apache.org/schema/spring"
>       xmlns:amq="http://activemq.apache.org/schema/core"
>       xmlns:p="http://www.springframework.org/schema/p"
>       xsi:schemaLocation="
>        http://www.springframework.org/schema/beans
> http://www.springframework.org/schema/beans/spring-beans.xsd
>        http://www.springframework.org/schema/context
> http://www.springframework.org/schema/context/spring-context.xsd
>        http://activemq.apache.org/schema/core
> http://activemq.apache.org/schema/core/activemq-core.xsd
>        http://camel.apache.org/schema/spring
> http://camel.apache.org/schema/spring/camel-spring.xsd
> ">
>  <context:component-scan base-package="com" />
>  <context:property-placeholder location="classpath:properties/*.properties" />
>
>  <bean id="senderService" class="com.service.SenderService">
>     <constructor-arg index="0"><ref bean="testCamelContext"
> /></constructor-arg>
>  </bean>
>
>  <camel:camelContext id="testCamelContext">
>    <camel:package>com.camel</camel:package>
>    <camel:route id="Timer_to_request">
>      <camel:from uri="timer://testBounce?fixedRate=true&amp;period=2000" />
>      <camel:to uri="bean:senderService?method=sendString" />
>    </camel:route>
>
>    <camel:route id="service_to_bounce">
>      <camel:from uri="bean:senderService?method=sendString" />
>      <camel:to uri="activemq:test:bounce" />
>    </camel:route>
>  </camel:camelContext>
>
>  <!-- Setup a broker for testing -->
>      <!--
>      <amq:transportConnector name="stomp" uri="tcp://localhost:61613" />
>  <amq:broker>
>    <amq:transportConnectors>
>      <amq:transportConnector name="openWire" uri="tcp://localhost:9091" />
>    </amq:transportConnectors>
>  </amq:broker>
>      -->
>
>  <bean id="activemqBroker"
> class="org.apache.activemq.camel.component.ActiveMQComponent">
>    <property name="brokerURL" value="tcp://localhost:9091" />
>  </bean>
>
>  <!-- Traces flow of messages -->
>  <bean id="traceFormatter"
> class="org.apache.camel.processor.interceptor.DefaultTraceFormatter">
>    <property name="showBody" value="false" />
>    <property name="showBodyType" value="true" />
>    <property name="showBreadCrumb" value="false" />
>    <property name="maxChars" value="1000" />
>  </bean>
> </beans>
>
> ---------------------------------------------------- the senderService
> ------------------------------------------------------------------------------------------------------------------
>
> package com.service;
>
> import org.apache.camel.CamelContext;
> import org.apache.camel.Handler;
> import org.apache.camel.ProducerTemplate;
> import org.apache.camel.Route;
> import org.springframework.stereotype.Service;
>
> @Service(value = "senderService")
> public class SenderService {
>
>  public SenderService (CamelContext camelContext) {
>    System.out.println ("***************************************");
>
>    System.out.println ("Camel context: " + camelContext.getName ());
>    for (Route r : camelContext.getRoutes ()) {
>      System.out.println (r.getEndpoint ());
>    }
>
>
>    System.out.println ("***************************************");
>  }
>
>  @Handler
>  public String sendString () {
>    return "This is a dumb test - it should just do a round Trip...";
>  }
>
>  @Handler
>  public void receiveString (String inStr) {
>    System.out.println ("---------------- START ----------------");
>    System.out.println ("Got this message: " + inStr);
>    System.out.println ("----------------- END -----------------");
>  }
>
>  /**
>   *  called by some event...that triggers the request
>   */
>  public void causeInteraction () {
>    // some event...
>    sendString ();
>  }
> }
>
> The "openWire" connection seems to take: (from bounceService)
> 12:31:43,877  INFO TransportServerThreadSupport:72 - Listening for
> connections at: tcp://northstar.appsig.com:9091
> 12:31:43,877  INFO TransportConnector:252 - Connector openWire Started
>
> but i get this error (scrolling):
> 12:31:44,466 DEBUG SpringCamelContext:1842 - Route: SIMPLE_BOUNCE >>>
> EventDrivenConsumerRoute[Endpoint[activemq://test:bounce]
> ->instrumentation:route[UnitOfWork(Channel[BeanProcessor[bean:
> bounceService]])]]
> 12:31:44,466 DEBUG SpringCamelContext:1846 - Starting consumer (order:
> 1000) on route: SIMPLE_BOUNCE
> 12:31:44,474 DEBUG DefaultManagementAgent:314 - Registered MBean with
> objectname: org.apache.camel:context=northstar.appsig.com/testCamelContext,type=consumers,name=JmsConsumer(0x1c90a278)
> 12:31:44,474 DEBUG JmsConsumer:91 - Starting consumer:
> Consumer[activemq://test:bounce]
> 12:31:44,486 DEBUG FailoverTransport:663 - Reconnect was triggered but
> transport is not started yet
> . Wait for start to connect the transport.
> 12:31:44,495 DEBUG FailoverTransport:297 - Started.
> 12:31:44,496 DEBUG FailoverTransport:656 - Waking up reconnect task
> 12:31:44,497 DEBUG FailoverTransport:686 - urlList
> connectionList:[tcp://localhost:61616]
> 12:31:44,499 DEBUG FailoverTransport:840 - Attempting connect to:
> tcp://localhost:61616
> 12:31:44,503 DEBUG DefaultMessageListenerContainer:372 - Established
> shared JMS Connection
> 12:31:44,504 DEBUG DefaultMessageListenerContainer:539 - Resumed
> paused task: org.springframework.j
> ms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker@64b25680
> 12:31:44,544 DEBUG FailoverTransport:884 - Connect fail to:
> tcp://localhost:61616, reason: java.net.ConnectException: Connection
> refused
> 12:31:44,545 DEBUG TcpTransport:508 - Stopping transport tcp://localhost:61616
>
> I am unsure why it is trying to use localhost:61616????
>
> And i don't see a connection in the senderService, only the timer going off...
> Again any help would be great, I am pretty sure this is just
> originating from my lack of knowledge.
>
> Thanks in advance!!!
>



-- 
Claus Ibsen
-----------------
FuseSource
Email: cibsen@fusesource.com
Web: http://fusesource.com
Twitter: davsclaus
Blog: http://davsclaus.blogspot.com/
Author of Camel in Action: http://www.manning.com/ibsen/

Mime
View raw message