创建PDF并通过Apache的骆驼发送邮件
问题描述:
我们有以下情形:创建PDF并通过Apache的骆驼发送邮件
- 客户发送包含两个部分XML消息
- 的XML的第一部分包含的信息应该被用于创建的使用FOP组分和XSLT PDF
- 的XML的第二部分包含在该邮件主体中使用的信息,主题等
在骆驼共nfiguration:
- 传入的XML可以转化为XSL:FO(使用XSLT)
- FOP的组件可以被调用,不是一个PDF文件可
- 邮件部件可以被调用,但比我有以下问题
- 包含邮件信息的原始邮件不再可用。一种可能性是将原始主体存储在标题或属性中
- PDF应作为附件添加。我认为没有默认的处理器,过滤器等可用于将主体移动到附件。所以我必须写我自己的处理器
问题
- 任何人都有一个类似的用例例如骆驼配置?
- 可能是一个Splitter模式,但当前的例子在XML文件中有多个顺序,我们的XML文件不包含多个项目,但包含一些数据。在这个用例中是否还有另一种模式?
任何建议将非常有帮助。
我试着用下面的骆驼配置,但在合并策略中zip从不存在。它看起来像没有从createZip路线
<camel:multicast strategyRef="mergeStrategy">
<camel:to uri="direct:createZip"/>
<camel:to uri="direct:createRequestMessage"/>
</camel:multicast>
<camel:to uri="smtp://[email protected]"></camel:to>
</camel:route>
<camel:route>
<camel:from uri="direct:createZip" />
<camel:from uri="file:////data/tmp/zip/input">
<camel:description>Reading files from the input folder</camel:description>
</camel:from>
<camel:aggregate strategyRef="zipStrategy" eagerCheckCompletion="true" completionFromBatchConsumer="true">
<camel:correlationExpression>
<camel:constant>true</camel:constant>
</camel:correlationExpression>
<camel:setHeader headerName="dummybody">
<camel:simple>${body}</camel:simple>
</camel:setHeader>
</camel:aggregate>
<camel:setHeader headerName="Strategy-Attachment">
<camel:constant>true</camel:constant>
</camel:setHeader>
</camel:route>
<camel:route>
<camel:from uri="direct:createRequestMessage" />
<camel:to uri="create_request.xslt?saxon=true" />
<camel:setHeader headerName="Content-Type">
<camel:constant>text/html</camel:constant>
</camel:setHeader>
<camel:setHeader headerName="Strategy-Body">
<camel:constant>true</camel:constant>
</camel:setHeader>
</camel:route>
答
您与direct:createZip
路线是错误的反应,你真的不能有2个来自同一路线。相反,您应该做的是使用Content Enricher EIP模式:http://camel.apache.org/content-enricher.html
您可以使用<pollEnrich>
来使用该文件。如果没有文件,请注意如何处理,然后您需要设置超时。所以请阅读关于此的文档。