Настройка метаданных ServiceInstance после InstanceRegisteredEvent с помощью Eureka - PullRequest
0 голосов
/ 10 апреля 2020

Таким образом, этот вопрос проистекает из разработки Axon Spring Cloud Extension .

Сначала короткое объяснение, что это за расширение:

Цель расширения Axon Framework - предоставить решение для обнаружения служб, обеспечивающее согласованную маршрутизацию командных сообщений на отдельные узлы в распределенном сценарии. Часть службы обнаружения, как обмен информацией между обнаруженными узлами. Распространяемая информация состоит из набора командных сообщений, которые может обрабатывать любой данный узел.

Теперь это расширение изначально было разработано и протестировано с помощью решения Eureka Discovery Service / Client компании Spring Cloud Netflix. Как описано ранее, обнаруженные узлы должны обмениваться информацией друг с другом.

Первоначальная идея для этой реализации состояла в том, чтобы использовать поле метаданных ServiceInstance. Метаданные будут обновляться каждый раз, когда информация об обработке команд узла будет меняться. Таким образом, это предоставит возможности обработки команд ServiceInstance' с другими существующими узлами. Позже мы узнали, что это не было целью с точки зрения библиотеки Spring Cloud Commons, что можно найти в этом выпуске GitHub, который я создал в тот же день.

Однако для Eureka этот подход работал нормально, по крайней мере, для spring-cloud-commons версии 2.0.1.RELEASE. После обновления в направлении выпуска Hoxton.SR3 мы заметили некоторую проблему с использованием расширения в сочетании с Eureka Spring Cloud Netflix.

До запуска InstanceRegisteredEvent мы все еще могли обновить метаданные ServiceInstance. После публикации этого события это было уже невозможно. К сожалению, именно после этого события добавляется информация об обработке команд. Таким образом, мы больше не могли распространять эту информацию через метаданные ServiceInstance.

Сказав все это, я наконец-то пришел к своим вопросам:

  1. Как там другой подход к обновлению метаданных ServiceInstance?
  2. И, возможно, что еще более важно, все еще ожидается, что действительная операция по корректировке метаданных ServiceInstance с модулями, содержащимися в Hoxton.SR3?

Для тех, кто заинтересован, класс, содержащийся в вышеупомянутом расширении, выполняющем обновления метаданных, можно найти здесь .

Наконец, для большей ясности, это это полный набор зависимостей Spring (-Cloud), используемых прямо сейчас:

  • spring-cloud-commons -> 2.0.1.RELEASE
  • spring-context -> 5.1.4. РЕЛИЗ
  • spring-web (исключая spring-expression & spring-aop) -> 5.1.4. РЕЛИЗ
  • spring-boot-starter -> 2.1.2. РЕЛИЗ
  • spring-boot-configuration-processor -> 2.1.2. РЕЛИЗ
...