#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