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

camel jpa@Consumed未被调用

卫财
2023-03-14

我试图在jpa实体上使用@Consumed和camel。

这是我的路线:

<route id="incomingFileHandlerRoute"> 
<from
   uri="jpa://com.menora.inbal.incomingFileHandler.Jpa.model.MessageToDB?consumer.nativeQuery=select
    * from file_message where mstatus = 'TODO'&amp;consumer.delay=5000&amp;consumeDelete=false&amp;consumeLockEntity=true&amp;consumer.SkipLockedEntity=true" />
<to uri="bean:incomingFileHandler" />
                    </route>

我的实体:

@Entity
@Table(name = "file_message")
public class MessageToDB implements Serializable {
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    @Id
    private String uuid;
    private String fileName;
    private String body;
    private String mstatus;
    @Temporal(TemporalType.TIMESTAMP)
    private Date mtimestamp;

    @Consumed
    public void updateMstatus() {
        setMstatus(MessageStatus.DONE.name());
    }

    public String getUuid() {
        return uuid;
    }

    public void setUuid(String uuid) {
        this.uuid = uuid;
    }

    public String getFileName() {
        return fileName;
    }

    public void setFileName(String fileName) {
        this.fileName = fileName;
    }

    public String getBody() {
        return body;
    }

    public void setBody(String body) {
        this.body = body;
    }

    public String getMstatus() {
        return mstatus;
    }

    public void setMstatus(String mstatus) {
        this.mstatus = mstatus;
    }

    public Date getMtimestamp() {
        return mtimestamp;
    }

    public void setMtimestamp(Date mtimestamp) {
        this.mtimestamp = mtimestamp;
    }

}

我确实获得了来自db的结果的incomingFileHandler bean,但我没有获得消费方法updateMstatus。incomingFileHandler bean被连续调用,因为总是有来自db的结果

共有1个答案

司马高明
2023-03-14

我在实体中使用camel jpa和注释@consumerd@preconsumerd实现了类似的功能,但没有调用这些方法。

我查看了camel-jpa源代码,在JpaC中找到了这个onsumer.java

protected DeleteHandler<Object> createPreDeleteHandler() {
    // Look for @PreConsumed to allow custom callback before the Entity has been consumed
    final Class<?> entityType = getEndpoint().getEntityType();
    if (entityType != null) {
        // Inspect the method(s) annotated with @PreConsumed

如果entityTypenull实体类inst检查带有@consumered@presumerd注释的方法。

解决方案:添加entityType=com。xx。yy。MessageToDB到您的URI以设置endpoint实体类型。

 类似资料:
  • 问题内容: 我有一个非常简单的Servlet和一个非常简单的HttpSessionListener: 我的方法从未被调用(没有日志输出),最终我在调用getSession()的那一行上得到一个 我尝试拨打电话时也没有问题,但存在相同的问题。 我不明白- 注释不足以调用我的侦听器吗?Eclipse甚至在下方将其显示为侦听器。 问题答案: 原来这是愚蠢的Eclipse问题之一… Project-> C

  • 我正在使用一个简单的并每隔毫秒调用: 问题是虽然计时器在正确的时间结束,但是方法并没有每毫秒被调用一次。每次都少了几毫秒。 我使用日志检查它,发现的值在最后是597,而它应该是999,因为每次调用时它都会得到1。有精度误差吗?

  • 我的从未被调用,即使我在inapp对话框中单击立即购买,logcat也不会打印任何内容。

  • 我是写测试和使用Mockito的新手。我在Stackoverflow上阅读了类似的主题,并做了建议的更改,确保所考虑的类/接口/方法是开放的。 我试图跟踪这个 模仿构造函数注入的依赖项 这是我目前想出来的测试 但我一直得到的回应是 即使我在测试中没有提到这种方法,我也得到了这种反应。这是我的演示者注册方法。我已经改变了类/接口 同样地 这里是接口 感谢您的帮助。

  • 问题:为什么从不调用? 我在xml配置中扩展了,如 MyEntityManagerFactoryBean MyInterceptor: 更新:[解释为什么自定义脏政策看起来不像我的方式] 我希望每次更改实体中的内容时更新时间戳,但除外。同时,应该是持久的,而不是暂时的(意味着导致实体变脏)。 由于我使用Spring事务和Hibernate模板,有一些细微差别: 1) 我无法在每个setter的末尾

  • 我正在尝试使用SpringKafka将kafka与我的SpringBoot(v2.0.6版本)应用程序集成。现在我想要一个消费者和一个生产者。我让制作人工作得很好,我可以看到通过控制台消费者发送到主题的消息。我无法使用消费者代码,当Kafka主题中出现新消息时,它不会被调用。 这是我的Kafka配置类: 以下是我的pom依赖项: 以及消费者代码: 我正在我的计算机上运行kafka,正如我所说的——