2014-11-03 224 views
0
從文件夾

的Apache駱駝簡單的消息路由ActiveMQ的話題:Apache的駱駝發送消息JMS消費者接收消息

//Create context to create endpoint, routes, processor within context scope 
     CamelContext context = new DefaultCamelContext(); 


     //Create endpoint route 
     context.addRoutes(new RouteBuilder() { 

      @Override 
      public void configure() throws Exception 
      { 
       from("file:data/outbox").to("activemq:topic:Vadim_Topic"); 
       //from("activemq:topic:TEST").to.to("file:data/outbox"); 
      } 

     }); 

     context.start(); 
      Thread.sleep(5000); 
     context.stop(); 
    } 

和JMS實現,如果消費者主題:

ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(); 
     try { 

      Connection connection = connectionFactory.createConnection(); 
      Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); 

      //connection.setClientID("12345"); 

      connection.start(); 
      Topic topic = session.createTopic("Vadim_Topic"); 
      MessageConsumer messageConsumer = session.createConsumer(topic); 

      MessageListener messageListener = new MessageListener() { 

       public void onMessage(Message message) { 

        TextMessage textMessage = (TextMessage) message; 
        try { 
         System.out.println("Received message: " + textMessage.getText()); 
        } catch (JMSException e) { 
         e.printStackTrace(); 
        } 
       } 
      }; 

      messageConsumer.setMessageListener(messageListener); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

不明白爲什麼是我的消費者無法收到Camel路由發送的消息? 我想這個問題是我需要訂閱我的JMS消費者在駱駝發送的消息? 如果出現這種情況,我該怎麼辦?

+0

您確定文件已成功讀取併發送至主題嗎? – 2014-11-04 10:34:46

回答

0

駱駝不僅可以讓你發送消息到一個主題,它還可以很容易地從一個主題讀取消息,並將其發送到你的POJO之一。

,從你的主題讀取,並將消息發送到一個POJO看起來像這樣的路線:

from("activemq:topic:Vadim_Topic").bean(ExampleBean.class); 

駱駝會弄清楚這取決於它收到的消息的類型的POJO調用哪個方法,和可用的方法簽名。請參閱此頁面,瞭解有關在駱駝路線中使用POJO的詳細信息:https://camel.apache.org/bean.html