【发布时间】:2014-02-16 00:08:06
【问题描述】:
我的用例如下:
我的 Mule 项目中有两个流程
流程 1: a)Http 作为入站端点。用于触发流程。 b) 我有 hornetq Jms 配置,可以将数据推送到 Q。
流程 2: a) 将 HortnerQ 配置作为入站的 Jms,它使用来自同一队列的消息。 b)在此之后,我将数据库作为出站端点。在这里,我使用 SQL Server 进行数据库操作。
当我的数据库出现故障或尝试将数据插入到不存在的表时,重试机制应该应用于流。
完成以下更改: 我在我的 JMS 连接器上设置了 maxRedelievery=3。 在 hornetq-configuration.xml 文件中添加了 3 个。目前我使用的是 hornetq2.0 版本。
尝试了一些其他方法,例如使用 beginorjoin 保持 JMS 事务。在此之前没有运气。请有人帮我解决这种情况。
下面是我的配置xml文件。
<spring:beans>
<spring:bean id="MSSQLDataSourceBean" name="MSSQLDataSourceBean" class="org.enhydra.jdbc.standard.StandardDataSource" >
<spring:property name="driverName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
<spring:property name="url" value="jdbc:sqlserver://VIKRAM-PC\MSSQLEXPRESS:1433;databaseName=testsqldb;user=sa;password=mssql;"/>
</spring:bean>
</spring:beans>
<jms:connector name="jmsConnector" connectionFactory-ref="connectionFactory" specification="1.1" doc:name="JMS" maxRedelivery="3" validateConnections="true"/>
<jdbc-ee:connector name="Database" dataSource-ref="MSSQLDataSourceBean" validateConnections="true" queryTimeout="-1" pollingFrequency="0" doc:name="Database">
<reconnect frequency="5000" blocking="false" count="5"/>
</jdbc-ee:connector>
<flow name="hornetqsampleFlow2" doc:name="hornetqsampleFlow2">
<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" path="testHornetQ" doc:name="HTTP"/>
<set-payload value="test HornetQ" doc:name="Set Payload"/>
<logger message="############# before jms ############ #[message.payload]" level="INFO" doc:name="Logger"/>
<jms:outbound-endpoint queue="ExampleQueue" connector-ref="jmsConnector" doc:name="JMS" exchange-pattern="request-response"/>
<logger message="$$$$$$$$$$$$$$ after JMS $$$$$$$$$$$$$$$$$4" level="INFO" doc:name="Logger"/>
</flow>
<flow name="hornetqsampleFlow1" doc:name="hornetqsampleFlow1">
<jms:inbound-endpoint doc:name="JMS" connector-ref="jmsConnector" queue="ExampleQueue" exchange-pattern="request-response"/>
<logger message="$$$$$$$ in jms consumption flow $$$$$$$$$$$$" level="INFO" doc:name="Logger"/>
<jdbc-ee:outbound-endpoint exchange-pattern="request-response" queryTimeout="-1" doc:name="Database" connector-ref="Database" queryKey="insertque">
<jdbc-ee:query key="insertque" value="insert into tesdbone(colone,coltwo) values(123,'vikkione')"/>
</jdbc-ee:outbound-endpoint>
<!-- <file:outbound-endpoint path="C:\Users\SAN\Desktop" outputPattern="testhq.txt" responseTimeout="10000" doc:name="File"/> -->
</flow>
问候 维克拉姆
【问题讨论】:
标签: mule