繁体   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