2012-12-04 2 views
0

오라클 테이블에 100 개의 행이있는 경우 본문에 100 개의 행을 포함하는 전자 메일 하나를 받고 싶습니다. 대신 각 행에 대해 100 개의 전자 메일을받습니다 ... 나는 transactionPerMessage가이를 수행 할 것이라고 생각했습니다 (툴팁, "거짓이면 전체 결과 집합에 대해 단일 트랜잭션이 있습니다.")하지만 true 또는 false로 설정했는지 여부는 아무런 차이가 없습니다. 그것은 현재, 다음 마지막 그룹의 집계에 시간 제한 구성 (100)에 의해 그룹 메시지에 그리 게이터를 또한 것이다 사용 않는Mule에서 JDBC 쿼리의 여러 행을 단일 트랜잭션으로 반환하려면 어떻게해야합니까?

<?xml version="1.0" encoding="UTF-8"?> 

<mule xmlns:smtp="http://www.mulesoft.org/schema/mule/smtp" xmlns:jbossts="http://www.mulesoft.org/schema/mule/jbossts" xmlns:jdbc="http://www.mulesoft.org/schema/mule/jdbc" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:spring="http://www.springframework.org/schema/beans" version="CE-3.3.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" 
http://www.mulesoft.org/schema/mule/smtp http://www.mulesoft.org/schema/mule/smtp/current/mule-smtp.xsd 
http://www.mulesoft.org/schema/mule/jdbc http://www.mulesoft.org/schema/mule/jdbc/current/mule-jdbc.xsd 
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd 
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd 
http://www.mulesoft.org/schema/mule/jbossts http://www.mulesoft.org/schema/mule/jbossts/current/mule-jbossts.xsd "> 
    <jdbc:oracle-data-source name="Oracle_Data_Source" user="test" password="test" url="jdbc:oracle:thin:@//ora:1530/TEST.EXAMPLE.COM" transactionIsolation="UNSPECIFIED" doc:name="Oracle Data Source"/> 
    <jdbc:connector name="Database" dataSource-ref="Oracle_Data_Source" validateConnections="true" transactionPerMessage="false" queryTimeout="-1" pollingFrequency="5000" doc:name="Database"/> 
    <flow name="Ross_invoice_Workflow2Flow1" doc:name="Ross_invoice_Workflow2Flow1"> 
     <jdbc:inbound-endpoint queryKey="GetUnprocessedInvoices" queryTimeout="-1" pollingFrequency="1000" connector-ref="Database" doc:name="Database"> 
      <jdbc:query key="GetUnprocessedInvoices" value="SELECT  INVOICE_NUMBER FROM   FIN.LHF_INVOICE_WORKFLOW&#13;&#10;WHERE  (STATUS_FLAG = 'N')"/> 
     </jdbc:inbound-endpoint> 
     <echo-component doc:name="Echo"/> 
     <smtp:outbound-endpoint host="mail.example.com" to="[email protected]" from="[email protected]" subject="invoice test" responseTimeout="10000" doc:name="SMTP"/> 
    </flow> 
</mule> 

답변

1

하자 뮬 행마다 하나의 메시지를 작성하는 것이 아마하지 않습니다 100에 도달하십시오 (레코드 수가 항상 100의 배수가 아닌 경우). 커넥터에 transactionPerMessage "false"로 설정

+0

감사합니다, 데이비드을. 여전히 뭔가가 빠졌습니다. smtp 끝점 바로 앞에'

+0

MULE_CORRELATION_GROUP_SIZE 속성을 100으로 설정 했습니까? –

+0

아니, 아니에요. 그게 효과가 있었어! 이것은 궁극적으로 제가 사용했던 것입니다 : ' '감사합니다! –

0

엔드 포인트에 당신은 또한 설정 한 경우 transactionPerMessage 속성을 "true"로 일하고과 같이 트랜잭션을 추가해야합니다 :

<jdbc:inbound-endpoint queryKey="GetUnprocessedInvoices" queryTimeout="-1" pollingFrequency="1000" connector-ref="Database" doc:name="Database"> 
    <jdbc:query key="GetUnprocessedInvoices" value="SELECT  INVOICE_NUMBER FROM   FIN.LHF_INVOICE_WORKFLOW&#13;&#10;WHERE  (STATUS_FLAG = 'N')"/> 
    <jdbc:transaction action="ALWAYS_BEGIN"/> 
    <property key="receiveMessageInTransaction" value="true"/> 
</jdbc:inbound-endpoint> 
관련 문제