我想从DB中读取一些电子邮件详细信息,下面是我的连接器的样子:
<jdbc:connector name="dbConnector" dataSource-ref="dataSource">
<jdbc:query key="sqlQuery"
value="SELECT from, to, subject, body FROM email WHERE status='PENDING'" />
<jdbc:query key="sqlQuery.ack"
value="UPDATE email SET status='IN PROGRESS' WHERE id=#[map-payload:id]" />
</jdbc:connector>
然后我想用这些细节来发送一堆邮件。我期望入站端点将是JDBC连接器,出站端点将是SMTP连接器,但是我不知道如何存储和使用从该表读取的数据。有没有办法做到这一点,而不诉诸于Java代码?
使用转换器应该足以实现您的目标:入站JDBC端点将为您提供Map有效负载。从这个有效负载中,您将提取出站SMTP端点和消息体所需的属性:
<!-- Set SMTP endpoint properties -->
<message-properties-transformer>
<add-message-property key="subject" value="#[map-payload:subject]"/>
...
</message-properties-transformer>
<!-- Set the message Body as new payload -->
<expression-transformer>
<return-argument evaluator="map-payload" expression="body"/>
</expression-transformer>