GET Httpメソッドを使用して、ユーザーがpersonオブジェクトを要求するWebサービスがあります。この人はJMSキューに送られ、Spring Integrationの助けを借りて私は偽の電子メールアドレス(https://papercut.codeplex.com/)に送ります。私はSpring Integration Java DSLでコードを書いています。Spring統合電子メール再配信例外の場合
メールメッセージをもっと柔軟に送信する方法はありますか?
例外がスローされた場合、Spring Integrationの助けを借りてどのようにメールを再配信できますか?
public Person findById(Integer id) { Person person = jpaPersonRepository.findOne(id); jmsTemplate.convertAndSend("testQueue", person); return jpaPersonRepository.findOne(id); }
のJava Confiuration
Webサービス: はここに私のコードです(5回例えば、それは、次に送信されない場合は、例外が処理されますと、プログラムが停止します)
@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, "[email protected]")) .handle(Mail.outboundAdapter("127.0.0.1") .credentials("test","test").port(25) .javaMailProperties(p -> p.put("mail.debug", "true")), e -> e.id("sendMailEndpoint")) .get(); } }
ありがとうございます!あなたの答えははっきりしていた.advice(retryAdvice())は特に助けになりました。 – user3590899