当前位置: 首页 > 知识库问答 >
问题:

Apache Camel:在使用Spring操作之前设置对象依赖项

梁马鲁
2023-03-14

在本例中,我试图在调用businessLogic之前设置对象依赖关系。我收到一个空指针,因为未设置“使用者”对象

这里是例子的基础,主要是尝试使用Spring DSL。

http://camel.apache.org/polling-consumer

第节:基于计时器的轮询消费者

这是我的camel/spring配置:

  <bean id="simpleOutboxMessageConsumer" class="org.berlin.camel.esb.logs.mq.SimplePrintMessageConsumer"/>


  <!-- Continue with spring dsl for ESB -->
  <camelContext id="myCamel" xmlns="http://camel.apache.org/schema/spring">

    <!-- Define a MQ consumer template -->
    <consumerTemplate id="consumer" />

....
   </camelContext>

      <route id="fromOutboxAndConsume">           
          <from uri="timer://foo?period=30000" />
          <to uri="bean:simpleOutboxMessageConsumer?method=businessLogic" />                                        
      </route>

爪哇代码

@Component
public class SimplePrintMessageConsumer {   
    private static final Logger logger = Logger.getLogger(SimplePrintMessageConsumer.class);        
    private int count;  
    @Autowired 
    private ConsumerTemplate consumer;          
    public void setConsumer(final ConsumerTemplate consumer) {
        this.consumer = consumer;
    }
    public void businessLogic() {
        logger.info("Launching business logic to consume outbox, blocking until we get a message >>>");
        while (true) {
            // Consume the message
            final String msg = consumer.receiveBody("activemq:queue.outbox", 3000, String.class);
            logger.info("Printing message found from queue: " + msg);
            if (msg == null) {
                // no more messages in queue
                break;
            }        
        }
    }   
}

消费对象的用法有一个空指针。我在想,Spring不仅仅是正确地自动装配那个bean。即使我没有使用Spring,我将如何将消费者模板对象传递给这个bean?

共有1个答案

阎善
2023-03-14

这应该有效

<bean id="simpleOutboxMessageConsumer" class="....SimplePrintMessageConsumer">
<property name="consumer" ref="consumer"/>
</bean>

去掉@AutoWire,我顺便检查一下@Autowire不工作的原因

 类似资料:
  • 对象的作用域决定哪些脚本可以使用该对象。默认情况下,当您创建对象实例时,该对象具有页作用域。同一 ASP 页中的任何脚本命令都能使用该页作用域的对象;当 ASP 页送回客户端时,该对象即被释放。对大多数对象来说,推荐的作用域是页作用域。您可以改变一个对象的作用域,使其可被其他页的脚本使用。本主题将解释如何使用页作用域的对象以及如何改变对象的作用域。 使用页作用域对象 在 ASP 页上用 Serve

  • 我似乎遇到了这个问题,当我使用注释为某些类配置依赖注入时,以及通过xml文件中的配置为其他类配置依赖注入时。 我有一个构造函数注入,我需要注入的对象到两个类的构造函数,他们得到不同的实例的,因为一个配置与注释和另一个在xml文件,所以是这样定义的: 已配置注释构造函数的类的构造函数: 和另一个类的构造函数: 它的配置在xml文件中: 所以我似乎注意到xml配置的类似乎有一个不同的实例,因为在通过x

  •        如果说开闭原则是面向对象设计的目标的话,那么依赖倒转原则就是面向对象设计的主要实现机制之一,它是系统抽象化的具体实现。依赖倒转原则是Robert C. Martin在1996年为“C++Reporter”所写的专栏Engineering Notebook的第三篇,后来加入到他在2002年出版的经典著作“Agile Software Development, Principles, P

  • 1. 前言 本小节目的在于带领大家学习xml 文件配置,应用 xml 文件配置 IoC。 在第二节中我们通过一个入门工程简单的体验了一把 Spring 的使用。在第三节中梳理了一下 Spring 的工作流程。 可能大家有了一个初步认知,Spring 框架的工作脱离不了核心配置文件 applicationContext.xml。 在配置文件中我们目前只用到了一个 bean 标签,而它的作用大家也明白

  • 本文向大家介绍使用ajax操作 JavaScript 对象,包括了使用ajax操作 JavaScript 对象的使用技巧和注意事项,需要的朋友参考一下 通过请求获取充分格式化的HTML虽然很方便,但这也意味着必须在传输文本内容的同时也 传输很多HTML标签。有时候,我们希望能够尽量少传输一些数据,然后马上处理这些数据。在 这种情况,我们希望取得能够通过JavaScript进行遍历的数据结构。   

  • 本文向大家介绍在ASP.NET 2.0中操作数据之五十九:使用SQL缓存依赖项SqlCacheDependency,包括了在ASP.NET 2.0中操作数据之五十九:使用SQL缓存依赖项SqlCacheDependency的使用技巧和注意事项,需要的朋友参考一下 导言:   在56和57章探讨的缓存技术使用的是基于时间的缓存周期,当过了某段时间后便将缓存数据从内存清除。当设置缓存时间为x秒时,数据