2016-08-26 3 views
0

Я использовал JHipster для создания нескольких микросервисов на основе Spring Cloud Netflix. В настоящее время думать о добавлении поддержки Spring AMQP в одной из услуг, с помощью этого учебника: https://spring.io/guides/gs/messaging-rabbitmq/Как использовать Spring AMQP с Spring Cloud Microservice

При добавлении AMQP поддержки в услугах, я обнаружил, что служба всегда регистрируются на сервере реестра (Eureka) со статусом DOWN, и если я удалить следующие Gradle зависимости проблема исчезнет

compile('org.springframework.amqp:spring-rabbit:1.5.3.RELEASE') 

услуги, с этой зависимостью будет первым зарегистрировать с сервером Eureka со статусом UP на время запуска, а затем сразу же перерегистрироваться со статусом DOWN.

eureka registry server

бревен сервера Eureka:

2016-08-26 06: 55: 18,291 INFO 5875 --- [IO-8761-Exec-11] cneregistry. AbstractInstanceRegistry: зарегистрированный экземпляр SALES/sales: 4454c0adc6b9c70d799930ac3b7d374c со статусом STARTING (replication = false) 2016-08-26 06: 55: 18.806 INFO 5875 --- [io-8761-exec-10] cneregistry.AbstractInstanceRegistry: зарегистрированный экземпляр SALES/sales: 4454c0adc6b9c70d799930ac3b7d374c со статусом STARTING (replication = true) 2016-08-26 06: 55: 21.260 INFO 5875 --- [nio-8761-exec-8] cneregistry.AbstractInstanceRegistry: зарегистрированный экземпляр SALES/sales: 4454c0adc6b9c70d799930ac3b7d374c со статусом STARTING (replication = false) 2016-08- 26 06: 55: 21.763 INFO 5875 --- [nio-8761-exec-1] cneregistry.AbstractInstanceRegistry: зарегистрированный экземпляр SALES/sales: 4454c0adc6b9c70d799930ac3b7d374c со статусом STARTING (replication = true) 2016-08-26 06:55: 37.220 INFO 5875 --- [nio-8761-exec-3] cneregistry.AbstractInstanceRegistry: зарегистрированный экземпляр SALES/sales: 4454c0adc6b9c70d799930ac3b7d374c со статусом UP (replication = false) 2016-08-26 06: 55: 37.730 INFO 5875 - - [nio-8761-exec-2] cneregistry.AbstractInstanceRegistry: зарегистрированный экземпляр SALES/sales: 4454c0adc6b9c70d799930ac3b7d374c со статусом UP (replication = true) 2016-08-26 06: 55: 37.885 INFO 5875 --- [io-8761 -exec-11] c. neregistry.AbstractInstanceRegistry: зарегистрированный экземпляр SALES/sales: 4454c0adc6b9c70d799930ac3b7d374c со статусом DOWN (replication = false) 2016-08-26 06: 55: 38.399 INFO 5875 --- [nio-8761-exec-5] cneregistry.AbstractInstanceRegistry: Зарегистрированный экземпляр SALES/sales: 4454c0adc6b9c70d799930ac3b7d374c со статусом DOWN (replication = true) 2016-08-26 06: 55: 43.699 INFO 5875 --- [a-EvictionTimer] cneregistry.AbstractInstanceRegistry: Выполнение задачи выселения с компенсациейTime 2ms 2016 -08-26 06: 56: 43,700 INFO 5875 --- [а-EvictionTimer] cneregistry.AbstractInstanceRegistry: Запуск задачи выселить с compensationTime 2мс

с другой стороны, журнал службы продаж делает N ot есть ошибки. Однако по сравнению с другими услугами, которые не имеют AMQP зависимости, наиболее существенное различие в журнале является

2016-08-26 06: 55: 37,881 WARN 6440 --- [nfoReplicator-0] cndiscovery. InstanceInfoReplicator: Игнорирование onDemand обновления из-за ограничения скорости

Я подтвердил, что проблема будет исправлена, если я удалю зависимость весны amqp.

Я использую неправильную зависимость amqp?Есть ли другой способ использования RabbitMQ в весенних облачных микросервисах?

ответ

1
  1. Весной загрузки, когда вы добавляете стартер зависимость как весна-AMQP-стартера, структура будет автоматически конфигурировать связанные свойства их значения по умолчанию.

  2. Discovery сервера, такие как Eureka использовать URL (HTTP: // {сервис-ф}: {сервис-порт}/здоровье) для проверки работоспособности службы (наличие), как IP и порт предоставляются для Eureka во время развертывания службы, вызов из службы выполняется на сервер для регистрации.

  3. вот трюк, если ваш сервер кролика MQ не запущен на сконфигурированный IP или порт, ответ проверки здоровья будет «DOWN».

Вывод: убедитесь, что сервер кролика и работает, и любые другие компоненты с тир зависимостей в пути к классам (Redis, Couchbase и так далее) и использовать URL (HTTP: // {сервис-ф} : {сервис-порт}/здоровье), чтобы проверить свое здоровье службы, вы должны получить что-то вроде этого:

{ "описание": "Весна Облако консул Discovery Client", "статус": "UP" }

Смежные вопросы