我有一个Camel路由,它从jboss JMS队列读取消息发送到两个直接路由,其中一个直接路由成功地处理了消息并发送到另一个JMS队列,另一个直接路由处理消息失败。
我的期望是,原始交换移动到死信通道,第一个直接路由不应该提交,使用回滚将消息发送到JMS队列。
我尝试过许多可能性,但没有一个成功。下面我提供了骆驼路线。好心帮帮我。
<bean id="jmsConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiTemplate" ref="jndiTemplate"/>
<property name="jndiName" value="jms/RemoteConnectionFactory"/>
</bean>
<bean id="jmsTransactionManager" class="org.springframework.jms.connection.JmsTransactionManager">
<property name="connectionFactory" ref="jmsConnectionFactory"/>
</bean>
<bean id="jmsConfig" class="org.apache.camel.component.jms.JmsConfiguration">
<property name="connectionFactory" ref="jmsConnectionFactory"/>
</bean>
<bean id="jmsConfigTx" class="org.apache.camel.component.jms.JmsConfiguration">
<property name="connectionFactory" ref="jmsConnectionFactory"/>
<property name="transactionManager" ref="jmsTransactionManager"/>
<property name="transacted" value="true"/>
</bean>
<bean id="jms" class="org.apache.camel.component.jms.JmsComponent">
<property name="configuration" ref="jmsConfig"/>
</bean>
<bean id="jmstx" class="org.apache.camel.component.jms.JmsComponent">
<property name="configuration" ref="jmsConfigTx"/>
</bean>
<bean id="successProcessor" class="com.test.SuccessTestProcessor"/>
<bean id="errorProcessor" class="com.test.ErrorTestProcessor"/>
<bean id="deadChannelProcessor" class="com.test.DeadChannelTestProcessor"/>
<bean id="myDeadLetterErrorHandler" class="org.apache.camel.builder.DeadLetterChannelBuilder">
<property name="deadLetterUri" value="direct:error_channel"/>
</bean>
<camelContext xmlns="http://camel.apache.org/schema/spring">
<route id="route-one" errorHandlerRef="myDeadLetterErrorHandler">
<from uri="jmstx:queue:JMS_IN"/>
<transacted/>
<to uri="direct:success-route"/>
<to uri="direct:error-route"/>
</route>
<route id="direct-success-route">
<from uri="direct:success-route"/>
<process ref="successProcessor"/>
<to uri="jmstx:queue:JMS_OUT_1"/>
</route>
<route id="direct-error-route">
<from uri="direct:error-route"/>
<process ref="errorProcessor"/>
<to uri="jmstx:queue:JMS_OUT_2"/>
</route>
<route id="direct_error_channel">
<from uri="direct:error_channel"/>
<process ref="deadChannelProcessor"/>
<to uri="jmstx:queue:ERROR"/>
</route>
</camelContext>
<-- error -->
<bean id="jmsConfigTx" class="org.apache.camel.component.jms.JmsConfiguration">
<property name="connectionFactory" ref="jmsConnectionFactory"/>
<property name="transactionManager" ref="jmsTransactionManager"/>
<property name="transacted" value="true"/>
</bean>
in the above code snippet already Transactionfactory refers to the jmsConnectionFactory internally , is there any need to write one more property to refer jmsConnectionFactory .
问题内容: 我有一个Python脚本作为守护程序运行。在启动时,它产生5个进程,每个进程都连接到Postgres数据库。现在,为了减少数据库连接的数量(最终将变得非常大),我试图找到一种在多个进程之间共享单个连接的方法。为此,我正在研究API。但是,我不确定如何使用该API在各个进程之间传递对象。谁能告诉我该怎么做? 为了解决这个问题,我也开放其他想法。 我之所以不考虑将连接作为构造函数的一部分传
本文向大家介绍Docker容器跨主机通信中直接路由方式详解,包括了Docker容器跨主机通信中直接路由方式详解的使用技巧和注意事项,需要的朋友参考一下 概述 就目前Docker自身默认的网络来说,单台主机上的不同Docker容器可以借助docker0网桥直接通信,这没毛病,而不同主机上的Docker容器之间只能通过在主机上用映射端口的方法来进行通信,有时这种方式会很不方便,甚至达不到我们的要求,因
我正在尝试在我的nginx服务器上设置vue路由器。我遇到的问题是,如果我直接在浏览器中输入url,我的路线就不起作用。 我尝试了vue路由器文档中描述的服务器配置,以及建议的堆栈溢出类似配置。我当前的nginx位置配置如下: 所做的就是将任何路径重定向到我的根组件(path:),而不是。这确实有意义,并且似乎只重定向到索引文件。我如何重定向直接链接的到路由在我的VueJS应用程序? 以下是我的v
问题内容: 我有一个v3的撰写文件,其中有3个服务共享/使用相同的卷。在使用群模式时,我们需要创建额外的容器和卷来管理整个集群中的服务。 我打算使用NFS服务器,以便单个NFS共享将直接安装在群集内的所有主机上。 我发现以下两种实现方法,但是它需要在Docker主机上执行额外的步骤- 在主机上使用“ fstab”或“ mount”命令挂载NFS共享,然后将其用作Docker服务的主机卷。 使用Ne
问题内容: 这篇文章是JPA的延续。如何在持久化后从数据库获取值 当我执行以下命令时,我将遵循以下异常,该如何解决呢? DAOImpl 代码 applicationContext.xml 问题答案: 我猜这里的问题是,尽管您已经为事务管理器定义了bean,但是您没有注释启用弹簧事务的create()方法。 还要删除该语句,因为现在所有事务管理都将在spring之前完成,如果您保留该语句不变,则将再
问题内容: 对于以下发布请求如何使用烧瓶中从ajax发布的数据?: 我收到一个错误: 我尝试通过以下两种方式解决该问题,但似乎无济于事。 使用Flask-CORS 这是用于处理的扩展,应使跨域AJAX成为可能。 我的 pythonServer.py 使用此解决方案: 使用特定的Flask装饰器 这是Flask 官方 代码片段,定义了一个装饰器,该装饰器应允许其装饰功能。 http://flask.