|
32 | 32 | import com.github.sonus21.rqueue.utils.Constants; |
33 | 33 | import com.github.sonus21.rqueue.utils.backoff.TaskExecutionBackOff; |
34 | 34 | import java.util.Collections; |
| 35 | +import java.util.LinkedList; |
35 | 36 | import java.util.List; |
36 | 37 | import org.springframework.core.task.AsyncTaskExecutor; |
37 | 38 | import org.springframework.core.task.TaskExecutor; |
@@ -82,7 +83,7 @@ public class SimpleRqueueListenerContainerFactory { |
82 | 83 | // Any custom message requeue message template. |
83 | 84 | private RqueueMessageTemplate rqueueMessageTemplate; |
84 | 85 |
|
85 | | - private List<Middleware> middlewares; |
| 86 | + private final List<Middleware> middlewares = new LinkedList<>(); |
86 | 87 |
|
87 | 88 | // Any message headers that should be set, only used for message serialization |
88 | 89 | private MessageHeaders messageHeaders; |
@@ -509,12 +510,23 @@ public List<Middleware> getMiddlewares() { |
509 | 510 | } |
510 | 511 |
|
511 | 512 | /** |
512 | | - * Set middlewares those would be used while processing a message. |
| 513 | + * Add middlewares those would be used while processing a message. Middlewares are called in the |
| 514 | + * order they are added. |
513 | 515 | * |
514 | 516 | * @param middlewares list of middlewares |
515 | 517 | */ |
516 | 518 | public void setMiddlewares(List<Middleware> middlewares) { |
517 | 519 | notEmpty(middlewares, "middlewares cannot be empty"); |
518 | | - this.middlewares = middlewares; |
| 520 | + this.middlewares.addAll(middlewares); |
| 521 | + } |
| 522 | + |
| 523 | + /** |
| 524 | + * Add a given middleware in the chain |
| 525 | + * |
| 526 | + * @param middleware middleware |
| 527 | + */ |
| 528 | + public void useMiddleware(Middleware middleware) { |
| 529 | + notNull(middlewares, "middlewares cannot be null"); |
| 530 | + this.middlewares.add(middleware); |
519 | 531 | } |
520 | 532 | } |
0 commit comments