2012-09-01 88 views
-1

我必須在activemq的消費者端集成駱駝。我已經設置了activemq並嘗試配置駱駝(使用java DSL)的消費語言,但它不適合我。以下是代碼:通過Apache Camel獲取消息?

public class TestConsumer { 
    static String url = ActiveMQConnection.DEFAULT_BROKER_URL; 
    static String subject = "Test-AMQ"; 

    public static void main(String[] args) throws Exception { 
     CamelContext context = new DefaultCamelContext(); 
     BrokerService broker = new BrokerService(); 
     //broker.addConnector(url); 
     //broker.setBrokerName("localhost"); 
     broker.start(); 

     ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("vm://localhost?create=false&waitForStart=10000"); 
     context.addComponent("jms", JmsComponent.jmsComponentAutoAcknowledge(connectionFactory)); 
     context.addRoutes(new Routes()); 
     context.start(); 
    } 
} 

class Routes extends RouteBuilder { 
    @Override 
    public void configure() throws Exception { 
     from("jms:"+new TestConsumer().subject).process(new Processor() { 
      @Override 
      public void process(Exchange arg0) throws Exception { 
       System.out.println("Camel Test Message: " + arg0.toString()); 
      } 
     }); 
    } 
} 
+0

「Test-AMQ」是AMQ隊列名稱 –

+0

「不起作用」是什麼意思?你收到一個例外嗎? –

+0

另外'vm:// localhost'使用嵌入的代理。 –

回答

4

一個與您的工作類似的示例。

import org.apache.activemq.ActiveMQConnection; 
//import org.apache.activemq.broker.BrokerService; 
import org.apache.activemq.camel.component.ActiveMQComponent; 
import org.apache.camel.CamelContext; 
import org.apache.camel.Exchange; 
import org.apache.camel.Processor; 
import org.apache.camel.builder.RouteBuilder; 
import org.apache.camel.impl.DefaultCamelContext; 

public class TestConsumer { 
    static String url = ActiveMQConnection.DEFAULT_BROKER_URL; 
    static String subject = "Test-AMQ"; 

public static void main(String[] args) throws Exception { 
    CamelContext context = new DefaultCamelContext(); 
    // BrokerService broker = new BrokerService(); 

    // broker.start(); 

    ActiveMQComponent comp = ActiveMQComponent.activeMQComponent("vm://localhost?broker.persistent=false"); 
    context.addComponent("jms",comp); 
    context.addRoutes(new Routes()); 
    context.start();   
} 
} 

class Routes extends RouteBuilder { 
@Override 
public void configure() throws Exception { 
    from("jms:"+TestConsumer.subject).process(new Processor() { 
     @Override 
     public void process(Exchange arg0) throws Exception { 
      System.out.println("Camel Test Message: " + arg0.toString()); 
     } 
    }); 

    from("timer://foo?fixedRate=true&period=2000").setBody(simple("Hello, World")).to("jms:"+TestConsumer.subject); 
} 
} 

不知道你希望安裝程序如何在最後工作。 使用VM傳輸實際上並不需要啓動專用代理,而是使用VM實例中的一個代理。我只是放了一個定時器路由來觸發一些示例消息到該ActiveMQ隊列中,這些消息將被消耗。

相關問題