簡體   English   中英

使用Apache駱駝在Spring Boot中創建消息隊列

[英]Creating message queue in spring boot using apache camel

我是這個消息隊列的新手,並且剛剛開始學習一些基本知識。

因此,對於我們的春季啟動應用程序,我們遵循了類似於contoller對話到service以及將service對話到存儲庫的體系結構,因此在這里我必須創建一個控制器,該控制器將接受類DTO作為json並將這些信息發布到apache駱駝中指定的消息隊列中。 。 我正在關注此鏈接 供我參考,效果很好,但是當我嘗試在項目中實現它時,它說下面列出了一個錯誤。

錯誤

上下文初始化期間遇到異常-取消刷新嘗試:org.springframework.beans.factory.UnsatisfiedDependencyException:創建名稱為“ trackerQueueController”的bean時出錯:通過字段“ camelContext”表示的不滿意依賴關系; 嵌套的異常是org.springframework.beans.factory.NoSuchBeanDefinitionException:沒有可用的類型為org.apache.camel.CamelContext的合格Bean:至少應有1個可以作為自動裝配候選的Bean。 依賴項注釋:{@ org.springframework.beans.factory.annotation.Autowired(required = true)}

我創建了一個控制器,路由和處理器,如下所示:

調節器

@RestController
@RequestMapping("/deviceinfo")
public class TrackerQueueController {
@Autowired
CamelContext camelContext;

@Autowired
private
ProducerTemplate producerTemplate;

@PostMapping()
public void startCamel(@RequestBody FieldUpdate fieldUpdate) {
    producerTemplate.sendBody("activemq:topic:in", fieldUpdate);
}
}

路線

   @Component
public class TrackerQueueRoutes extends RouteBuilder {
    @Override
    public void configure() throws Exception {
        from("activemq:topic:in")
                .process(new TrackerProcessor() {
                    @Override
                    public void process(Exchange exchange) throws 
Exception {
                        log.info("I'm in");
                        FieldUpdate body = 
exchange.getIn().getBody(FieldUpdate.class);
                    log.info("Hello from camel processed message! 
Received payload: {}" , body.getSerialNumber());

exchange.getOut().setHeader(Exchange.HTTP_RESPONSE_CODE, 
HttpStatus.ACCEPTED);
                    }
            });
    }
}

處理器

public class TrackerProcessor implements Processor {
    @Override
   public void process(Exchange exchange) throws Exception {

   }
}

任何人都可以為我提供一些滿足我的需求或任何想法的教程鏈接。

正如克勞斯·易卜生在評論中建議的那樣,您必須將這些依賴項添加到POM文件中

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-spring-boot-starter</artifactId>
    <version>[camel-version]</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
  • camel-spring-boot-starter自動為您啟動CamelContext ,發現路線等
  • spring-boot-starter-web通過偵聽Web請求來保持應用程序運行。 否則,它將在啟動后立即關閉,因為沒有任何要執行的操作。

由於您的Camel路由類已正確注釋( @Component )並被子類化( extends RouteBuilder ),因此應該由Camel SpringBoot啟動程序自動發現。

有關所有這些主題以及更多信息,請參見Camel-SpringBoot文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM