Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 骆驼“;“成功交付确认书”;_Java_Oracle_Jms_Apache Camel_Activemq - Fatal编程技术网

Java 骆驼“;“成功交付确认书”;

Java 骆驼“;“成功交付确认书”;,java,oracle,jms,apache-camel,activemq,Java,Oracle,Jms,Apache Camel,Activemq,我一直在尝试提出一种骆驼路由,它将从activemq读取数据并写入Oracle AQ 但是,当一条消息成功写入Oracle aq时,我必须将一条成功的消息写入另一个活动mq队列(“id为41的类似消息已发送到Oracleq”) camel中是否有任何“自动确认”类型的功能在这里有用 这是我拥有的从活动mq到oracle aq的基本路由 <route> <from uri="jms:queue:Q.Customer1"/> <setHeader

我一直在尝试提出一种骆驼路由,它将从activemq读取数据并写入Oracle AQ

但是,当一条消息成功写入Oracle aq时,我必须将一条成功的消息写入另一个活动mq队列(“id为41的类似消息已发送到Oracleq”)

camel中是否有任何“自动确认”类型的功能在这里有用

这是我拥有的从活动mq到oracle aq的基本路由

<route>
    <from uri="jms:queue:Q.Customer1"/>
        <setHeader headerName="prop">
        <simple>header1Value</simple>
        </setHeader>
    <to uri="oracleQueue:queue:Q.Customer2"/>
</route>

头1值

只需在中添加另一个
,该队列指向您希望camel在写入oracle后发布到的队列,如下所示:

<onException>
    <exception>some.sql.Exception</exception>
    <to uri="some:error:handler:uri" /> <!-- like a bean or dead letter channel or whatever -->
</onException>
<route>
    <from uri="jms:queue:Q.Customer1"/>
    <setHeader headerName="prop">
        <simple>header1Value</simple>
    </setHeader>
    <to uri="oracleQueue:queue:Q.Customer2"/>
    <!-- this step will not be called until the previous one is finished  -->
    <to uri="jms:queue:SomeOtherQueue"/>
</route>

some.sql.Exception
头1值

这并不意味着消息已成功写入Oracle…对吗?…当消息成功写入Oracle时,我只需要将其写入另一个队列。当您说“成功”写入时,是否意味着DB事务已完成,并且记录已存在于DB中?除非并行执行此工作(这不是根据管线定义),否则在当前步骤完成之前,Camel将不会移动到下一步。因此,如果它使其成为
,则意味着该记录是在数据库中生成的。如果有可能出现错误,那么您为路由设置了一个错误处理程序,所有失败的执行都将转到那里,而不是最后的队列。希望这有帮助。也更新了代码sampe。“成功”表示消息已到达Oracle队列。我不在乎甲骨文用它做什么。我只关心消息何时被写入Oracle。答案中的示例可以做到这一点。比方说,在第一个“to”期间出现错误或异常。已完成,但在1期间出现错误。第二个“to”会发生吗?…谢谢你的回答。。。