Я пытаюсь запустить приложение в GKE. Я использую экземпляр RabbitMQ из cloudamqp. Я использую этот экземпляр для всех внутренних сообщений между моими микросервисами через AMQP.
Теперь я хочу отправлять сообщения в браузер, используя STOMP через SockJS, используя stompRelay. Когда я подключаюсь к экземпляру локально (на моей dev-машине), все работает как шарм. Сообщения отправляются и подтверждаются, ...
Когда я перемещаю приложение в рабочую среду (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]
Мой докер-файл
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?