【问题标题】:Apache Camel: How do I achive a transactional route in Camel if I have a DB access in a route and then an FTP producer endpoint?Apache Camel:如果我在路由中具有数据库访问权限,然后是 FTP 生产者端点,如何在 Camel 中实现事务性路由?
【发布时间】:2018-11-10 16:12:52
【问题描述】:

我的路线:

from(jms:queue:xxx)
...
.process(_db_access__here_will_be_written_in_db)
...
.to(ftp:yyy)

问题是,从队列中读取消息后,数据将写入数据库,但如果 ftp 端点生产者未能在目录中写入文件,我会在路由中收到错误,但数据库中的更改不会被回滚。

我想仅在文件将被提交时才将更改提交到数据库 成功写入ftp目录。我怎样才能在我的路线中做到这一点?

【问题讨论】:

    标签: java ftp apache-camel rollback transactional


    【解决方案1】:

    您正在查看transacted client

    如果你使用 camel-sql,你也可以添加事务

    sql:insert into tables value (id=:#myId)?transacted=true
    

    【讨论】:

    • 不幸的是,这并不容易。 "transacted=true" 仅对消费者有用,对分布式 XA 事务管理器无效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多