feat: デフォルトのリトライポリシーを修正
This commit is contained in:
		
							parent
							
								
									1124b69319
								
							
						
					
					
						commit
						718d3f3157
					
				|  | @ -1,3 +1,19 @@ | |||
| /* | ||||
|  * Copyright (C) 2024 usbharu | ||||
|  * | ||||
|  * Licensed under the Apache License, Version 2.0 (the "License"); | ||||
|  * you may not use this file except in compliance with the License. | ||||
|  * You may obtain a copy of the License at | ||||
|  * | ||||
|  *      http://www.apache.org/licenses/LICENSE-2.0 | ||||
|  * | ||||
|  * Unless required by applicable law or agreed to in writing, software | ||||
|  * distributed under the License is distributed on an "AS IS" BASIS, | ||||
|  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
|  * See the License for the specific language governing permissions and | ||||
|  * limitations under the License. | ||||
|  */ | ||||
| 
 | ||||
| package dev.usbharu.owl.broker.service | ||||
| 
 | ||||
| import dev.usbharu.owl.common.property.* | ||||
|  |  | |||
|  | @ -6,6 +6,6 @@ import kotlin.math.roundToLong | |||
| 
 | ||||
| class ExponentialRetryPolicy(private val firstRetrySeconds: Int = 30) : RetryPolicy { | ||||
|     override fun nextRetry(now: Instant, attempt: Int): Instant = | ||||
|         now.plusSeconds(firstRetrySeconds.toDouble().pow(attempt + 1.0).roundToLong()) | ||||
|         now.plusSeconds(firstRetrySeconds.times((2.0).pow(attempt).roundToLong())) | ||||
| 
 | ||||
| } | ||||
|  | @ -0,0 +1,36 @@ | |||
| /* | ||||
|  * Copyright (C) 2024 usbharu | ||||
|  * | ||||
|  * Licensed under the Apache License, Version 2.0 (the "License"); | ||||
|  * you may not use this file except in compliance with the License. | ||||
|  * You may obtain a copy of the License at | ||||
|  * | ||||
|  *      http://www.apache.org/licenses/LICENSE-2.0 | ||||
|  * | ||||
|  * Unless required by applicable law or agreed to in writing, software | ||||
|  * distributed under the License is distributed on an "AS IS" BASIS, | ||||
|  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
|  * See the License for the specific language governing permissions and | ||||
|  * limitations under the License. | ||||
|  */ | ||||
| 
 | ||||
| package dev.usbharu.owl.common.retry | ||||
| 
 | ||||
| import org.junit.jupiter.api.Assertions.assertEquals | ||||
| import org.junit.jupiter.api.Test | ||||
| import java.time.Instant | ||||
| 
 | ||||
| class ExponentialRetryPolicyTest { | ||||
|     @Test | ||||
|     fun exponential0() { | ||||
|         val nextRetry = ExponentialRetryPolicy().nextRetry(Instant.ofEpochSecond(300), 0) | ||||
| 
 | ||||
|         assertEquals(Instant.ofEpochSecond(330), nextRetry) | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     fun exponential1() { | ||||
|         val nextRetry = ExponentialRetryPolicy().nextRetry(Instant.ofEpochSecond(300), 1) | ||||
|         assertEquals(Instant.ofEpochSecond(360), nextRetry) | ||||
|     } | ||||
| } | ||||
		Loading…
	
		Reference in New Issue