【发布时间】:2017-01-14 08:27:51
【问题描述】:
我有一个网络服务,通过 GET Http 方法,用户请求一个人对象。这个人被发送到一个 JMS 队列,然后在 Spring Integration 的帮助下,我将它发送到一个虚假的电子邮件地址 (https://papercut.codeplex.com/)。我用 Spring Integration Java DSL 编写了代码。我想问一下:
是否有更灵活的方式发送电子邮件?
如果抛出异常,如何借助 Spring Integration 重新投递邮件? (例如 5 次,如果未发送,则处理异常并停止程序) 这是我的代码:
网络服务
public Person findById(Integer id) {
Person person = jpaPersonRepository.findOne(id);
jmsTemplate.convertAndSend("testQueue", person);
return jpaPersonRepository.findOne(id);
}
Java 配置
@Configuration
@EnableIntegration
@ComponentScan
public class JavaConfig {
private static final String DEFAULT_BROKER_URL = "tcp://localhost:61616";
private static final String DEFAULT_QUEUE = "testQueue";
@Bean
public ActiveMQConnectionFactory connectionFactory() {
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory();
connectionFactory.setBrokerURL(DEFAULT_BROKER_URL);
return connectionFactory;
}
@Bean
public JmsTemplate jmsTemplate() {
JmsTemplate template = new JmsTemplate();
template.setConnectionFactory(this.connectionFactory());
template.setDefaultDestinationName(DEFAULT_QUEUE);
return template;
}
@Bean
public DefaultMessageListenerContainer defaultMessageListenerContainer() {
DefaultMessageListenerContainer defaultMessageListenerContainer = new DefaultMessageListenerContainer();
defaultMessageListenerContainer.setDestinationName(DEFAULT_QUEUE);
defaultMessageListenerContainer.setConnectionFactory(this.connectionFactory());
return defaultMessageListenerContainer;
}
@Bean(name="inputChannel")
public DirectChannel directChannel() {
return new DirectChannel();
}
@Bean
public IntegrationFlow orders() {
return IntegrationFlows
.from(Jms.messageDrivenChannelAdapter(defaultMessageListenerContainer()))
.transform(new ObjectToStringTransformer())
.enrichHeaders(p -> p.header(MailHeaders.TO, "Papercut0@test.com"))
.handle(Mail.outboundAdapter("127.0.0.1")
.credentials("test","test").port(25)
.javaMailProperties(p -> p.put("mail.debug", "true")),
e -> e.id("sendMailEndpoint"))
.get();
}
}
【问题讨论】:
标签: email jms spring-integration