Не удается заставить STOMP работать / подключиться весной-загрузка в кластере GKE

#spring-boot #rabbitmq #google-kubernetes-engine #stomp

#весенняя загрузка #rabbitmq #google-kubernetes-engine #stomp

Вопрос:

Я пытаюсь запустить свое приложение в GKE. Я использую экземпляр RabbitMQ из cloudamqp. Я использую этот экземпляр для всех внутренних сообщений между моими микросервисами через AMQP.

Теперь я хочу отправлять сообщения в браузер, используя STOMP поверх SockJS, используя stompRelay. Когда я подключаюсь к экземпляру локально (на моей машине разработчика), все работает как по маслу. Сообщения отправляются и подтверждаются, …

Когда я перевожу приложение в рабочий режим (GKE), все очереди AMQP работают корректно, но я не могу заставить STOMP работать с реле… Когда я использую simpleBroker, все работает правильно.

Я почти уверен, что код написан правильно, поскольку он корректно работает с моего компьютера для разработки. Я думаю, что это связано с перехватом брандмауэров GKE.

Я попытался добавить дополнительные правила к брандмауэру на gce, разрешив весь входящий / исходящий трафик по TCP 61613,61614.

Ошибки

 o.s.m.s.s.StompBrokerRelayMessageHandler : TCP connection failure in session _system_: No CONNECTED frame received in 60000 ms.
r.io.net.impl.netty.tcp.NettyTcpClient   : CLOSED: [id: 0x5d96aa8d, /10.20.6.78:47136 :> xxxxxxxxxx.rmq.cloudamqp.com/35.195.232.78:61613]
  

Мой dockerfile

 FROM openjdk:8-jre-alpine

RUN apk add --no-cache tzdata
ENV TZ Europe/Brussels

ENV SPRING_PROFILES_ACTIVE production

WORKDIR /app
ADD target/application.jar /app/application.jar

EXPOSE 8080

CMD ["java", "-jar", "application.jar"]
  

Моя конфигурация реле

     @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        config.enableStompBrokerRelay("/topic", "/queue")
                .setRelayHost(relayHost)
                .setRelayPort(relayPort)
                .setSystemLogin(relayLogin)
                .setSystemPasscode(relayPasscode)
                .setVirtualHost(relayVHost)
                .setClientLogin(relayLogin)
                .setClientPasscode(relayPasscode);
    }
  

Я уже 2 дня пытаюсь запустить это…

У кого-нибудь есть STOMP в Spring-boot, работающий на GKE с внешним RabbitMQ?

Ответ №1:

После повторного просмотра конфигурации я обнаружил опечатку, которая вызывала проблемы с подключением к RabbitMQ.

 @Value("${app.stomp.username:guest}")
private String relayLogin;
  

Но конфигурация была

 app:
  stomp:
    user: xxxxxxxx