我正在开发一个宁静的网络服务,该网络服务的目的是根据传入的请求发送电子邮件。
我们决定使用 Mule 来实现这一点。我们在 mule 中定义了一个流,它接受请求(POST),然后将其写入队列。然后会有另一个流从这个队列中读取,然后使用 sendmail 或任何其他 java 邮件 api 发送消息。
我负责创建一个从队列中读取然后发送电子邮件的流。下面是将消息写入队列的 mule_config.xml 流程:
<!-- This is the persistent VM connector -->
<vm:connector name="mailQueueConnector" queueTimeout="1000">
<vm:queue-profile>
<file-queue-store />
</vm:queue-profile>
</vm:connector>
<flow name="MailService">
<https:inbound-endpoint address="https://localhost:71234/message/email"
method="POST"
exchange-pattern="request-response"
contentType="application/xml"/>
<vm:outbound-endpoint path="mailQueue" connector-ref="mailQueueConnector">
<message-property-filter pattern="http.status=200" />
<logger message="INTO mailQueue" level="INFO"/>
</vm:outbound-endpoint>
<response>
<message-property-filter pattern="http.status=200" />
<script:transformer>
<script:script engine="groovy">
<script:text>
import groovy.xml.*
def writer = new StringWriter()
def xml = new MarkupBuilder(writer)
xml.ApiMessage {
returnCode("200")
reason("Queued Succesfully!!!")
}
return writer.toString()
</script:text>
</script:script>
</script:transformer>
</response>
</flow>
从上面我可以看到,命中入站端点“https://localhost:71234/message/email”的 POST 电子邮件请求被写入队列“mailQueue”。但是对于我的任务,我如何阅读队列中的电子邮件并将其序列化为电子邮件对象,以便我可以在 java 中编写代码来发送该电子邮件?我假设我必须为此编写一个新流程。我对吗?任何人都可以在这里为我指出正确的方向。