簡體   English   中英

如何使用 spring-boot 微服務架構實現僅在一個實例上運行的任務

[英]How to achieve that a task just run on one instance with spring-boot microservice architecture

需要一個名為 AccountService.5 的服務來支持流量。所有這些實例都在 docker 容器中運行。現在我需要運行一個計划任務。 此任務應該只在單個 AccountService 實例上運行。但不是所有五個實例。哪個不重要

我的問題是如何配置來實現這個。eureka可以這樣做嗎?zookeeper似乎有管理集群的能力。我需要將AccountService注冊到Zookeeper中嗎?

希望有人能和我分享經驗

考慮使用像 Redis 這樣的共享數據存儲,或者,如果您已經在使用數據庫,則可以使用數據庫中的表來獲得任務鎖。 第一個出現的實例可以搶鎖,運行任務,並釋放鎖。

  1. spring-cloud-task包含在您的依賴項中(適用於計划任務)。
  2. 然后啟用這個屬性 - spring.cloud.task.single-instance-enabled=true
  3. 添加Spring Integration依賴項。 從這里復制/粘貼 - https://docs.spring.io/spring-cloud-task/docs/current/reference/#features-single-instance-enabled

注意:鎖是在 TASK_LOCK 表下創建和存儲的。 確保它是干凈的,否則您將無法重新啟動。

使用基於 Spring 的任務調度@Schedule

更多請點擊這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM