Невозможно включить конечную точку /monitor для spring-cloud-bus для push-уведомлений

Я настроил конфигурацию весеннего облака для чтения свойств из репозитория git. С текущей реализацией, если есть изменения в конфигурации, если опубликовать / обновить на моем клиенте, я могу увидеть обновленные свойства. Теперь я хотел бы использовать spring-cloud-bus-monitor для обнаружения изменений в моем репозитории git и автоматического обновления свойств в моих клиентских конечных точках. Даже после добавления spring-cloud-config-monitor в зависимости — конечная точка /monitor не включена, и поэтому даже при изменении свойств конфигурации на сервере конфигурации — ничего не обновляется.

У меня также есть сервер RabbitMQ, работающий локально. Цените любые указатели на то, как включить /monitor для push-уведомлений всем клиентам в шине.

http://localhost:8888/monitor

{
"timestamp": 1457025362412
"status": 405
"error": "Method Not Allowed"
"exception": "org.springframework.web.HttpRequestMethodNotSupportedException"
"message": "Request method 'POST' not supported"
"path": "/monitor"
}

o.s.cloud.bus.event.RefreshListener      : Received remote refresh request. Keys refreshed []

серверные пом-зависимости:

<dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-config-monitor</artifactId>
        <scope>test</scope>
    </dependency>
     <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-bus-amqp</artifactId>
    </dependency>

приложение.свойства:

spring.cloud.config.server.git.uri=file:\\\C:\\Users\\spring-cloud-config
server.port=8888
spring.cloud.config.server.monitor.github=false 

pom зависимость в клиенте:

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-monitor</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bus-amqp</artifactId>
        </dependency>

person Swetha V    schedule 03.03.2016    source источник


Ответы (1)


Вы не говорите, какую версию используете, она доступна только в Брикстоне (последняя - М5). Удалить <scope>test</scope>.

Должен быть:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-monitor</artifactId>
</dependency>

spring-cloud-config-monitor не требуется в клиенте.

Монитор предназначен для использования веб-перехватчиками служб хостинга git. Если вы используете файловую систему, вы должны использовать профиль сервера конфигурации native. Подробнее см. здесь.

person spencergibb    schedule 03.03.2016
comment
Спасибо!! Это помогло. Я использовал сборку Brixton, а также использовал репозиторий git вместо файловой системы. Мне еще предстоит использовать веб-перехватчик для удаленной отправки изменений конфигурации всякий раз, когда в репозитории GIT происходит отправка основной ветки, но я смог отправить изменения конфигурации клиенту вручную, выполнив сообщение. [POST]localhost:8888/monitor?path=demo - person Swetha V; 04.03.2016
comment
У меня есть один вопрос: будет ли проблема с производительностью, если я буду использовать подстановочный знак для трансляции изменений всем клиентам? Пример: [POST]localhost:8888/monitor?path=* Причина, по которой я задаю этот вопрос is - все мои файлы свойств конфигурации будут в одном и том же репо, и когда я использую веб-хук - github будет напрямую использовать URL-адрес моего приложения для отправки изменений при изменении конфигурации, а URL-адрес полезной нагрузки не будет иметь контекст какой файл изменен (т.е. - не будет знать имя приложения). есть идеи? - person Swetha V; 04.03.2016
comment
Информация в сообщении с github сообщает, какие файлы были изменены, и конечная точка /monitor использует это для определения приложений, которым нужно отправлять сообщения. - person spencergibb; 04.03.2016
comment
@spencergibb, я столкнулся с той же проблемой. Мой проект можно найти по адресу bitbucket.org/vikas_chaudhary2453 Не могли бы вы мне помочь. - person Vikky; 23.06.2019
comment
Добавляя больше к моей проблеме, я могу получить /actuator/monitor, но для публикации включена безопасность. Webhook пытается отправить сообщение на привод/монитор и каждый раз получает 405. - person Vikky; 24.06.2019