想要在 REST post 请求的每次重试失败时发送邮件
Want to send mail on each retry failure for REST post request
我是 运行 一个测试应用程序,用于向第 3 方 REST 端点进行 http POST 提交并使用建议实现重试。我使用基本的 requesthandleradvice 和 simpleretryplicy 并将 backoffpolicy 设置为 exponential.how 来调用在每次重试失败时发送邮件的方法。这样做的例子会很棒。
以下是它对我有用的方法。感谢@artem 的快速回复:
<bean class="org.springframework.retry.support.RetryTemplate">
<property name="backOffPolicy">
<bean class="org.springframework.retry.backoff.ExponentialBackOffPolicy">
<property name="initialInterval">
<value type="java.lang.Long">#{new Long('${initialRetryInterval}')}</value> <!-- in milliSeconds -->
</property>
<property name="multiplier">
<value type="java.lang.Double">#{new Double('${retryExpMultiplier}')}</value>
</property>
<property name="maxInterval">
<value type="java.lang.Long">#{new Long('${.maxRetryInterval}')}</value>
<!-- in milliSeconds -->
</property>
</bean>
</property>
<property name="retryPolicy">
<bean class="org.springframework.retry.policy.SimpleRetryPolicy">
<property name="maxAttempts">
<value type="java.lang.Integer">#{new Integer('${maxRetryAttempts}')}</value>
</property>
</bean>
</property>
<property name="listeners">
<bean class="com.example.listeners.SampleRetryListener"/>
</property>
</bean>
RequestHandlerRetryAdvice
可以与 RetryTemplate
一起提供,而 RetryTemplate
又可以与以下一起提供:
/**
* Register an additional listener.
*
* @param listener the {@link RetryListener}
* @see #setListeners(RetryListener[])
*/
public void registerListener(RetryListener listener) {
最后一个是这样的:
/**
* Called after every unsuccessful attempt at a retry.
*
* @param context the current {@link RetryContext}.
* @param callback the current {@link RetryCallback}.
* @param throwable the last exception that was thrown by the callback.
* @param <T> the return value
* @param <E> the exception to throw
*/
<T, E extends Throwable> void onError(RetryContext context, RetryCallback<T, E> callback, Throwable throwable);
您可以实现此方法并将 Message
发送到 MessageChannel
,MailSendingMessageHandler
作为订阅者。
我是 运行 一个测试应用程序,用于向第 3 方 REST 端点进行 http POST 提交并使用建议实现重试。我使用基本的 requesthandleradvice 和 simpleretryplicy 并将 backoffpolicy 设置为 exponential.how 来调用在每次重试失败时发送邮件的方法。这样做的例子会很棒。
以下是它对我有用的方法。感谢@artem 的快速回复:
<bean class="org.springframework.retry.support.RetryTemplate">
<property name="backOffPolicy">
<bean class="org.springframework.retry.backoff.ExponentialBackOffPolicy">
<property name="initialInterval">
<value type="java.lang.Long">#{new Long('${initialRetryInterval}')}</value> <!-- in milliSeconds -->
</property>
<property name="multiplier">
<value type="java.lang.Double">#{new Double('${retryExpMultiplier}')}</value>
</property>
<property name="maxInterval">
<value type="java.lang.Long">#{new Long('${.maxRetryInterval}')}</value>
<!-- in milliSeconds -->
</property>
</bean>
</property>
<property name="retryPolicy">
<bean class="org.springframework.retry.policy.SimpleRetryPolicy">
<property name="maxAttempts">
<value type="java.lang.Integer">#{new Integer('${maxRetryAttempts}')}</value>
</property>
</bean>
</property>
<property name="listeners">
<bean class="com.example.listeners.SampleRetryListener"/>
</property>
</bean>
RequestHandlerRetryAdvice
可以与 RetryTemplate
一起提供,而 RetryTemplate
又可以与以下一起提供:
/**
* Register an additional listener.
*
* @param listener the {@link RetryListener}
* @see #setListeners(RetryListener[])
*/
public void registerListener(RetryListener listener) {
最后一个是这样的:
/**
* Called after every unsuccessful attempt at a retry.
*
* @param context the current {@link RetryContext}.
* @param callback the current {@link RetryCallback}.
* @param throwable the last exception that was thrown by the callback.
* @param <T> the return value
* @param <E> the exception to throw
*/
<T, E extends Throwable> void onError(RetryContext context, RetryCallback<T, E> callback, Throwable throwable);
您可以实现此方法并将 Message
发送到 MessageChannel
,MailSendingMessageHandler
作为订阅者。