想要在 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 发送到 MessageChannelMailSendingMessageHandler 作为订阅者。