无法在GKE集群上的spring-boot中使STOMP工作/连接

时间:2019-03-28 16:04:33

标签: spring-boot rabbitmq google-kubernetes-engine stomp

我正在尝试让我的应用程序在GKE中运行。我正在使用cloudamqp的RabbitMQ实例。我将这个实例用于通过AMQP在我的微服务之间进行的所有内部消息传递。

现在,我想使用stompRelay通过SockJS通过STOMP向浏览器发送消息。当我本地连接到实例(在我的dev机器上)时,一切都像一个超级按钮。邮件得到发送和确认,...

当我将应用程序移至生产(GKE)时,所有AMQP队列都可以正常工作,但是我无法让STOMP与中继一起工作... 当我使用simpleBroker时,一切正常。

我很确定代码正确无误,因为它可以在我的开发PC上正常工作。我认为这与GKE防火墙拦截有关。

我尝试通过允许TCP 61613,61614上的所有输入/输出流量在gce上的防火墙上添加其他规则。

错误

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天,试图让它运行起来……

有人在带有外部RabbitMQ的GKE上运行的Spring-boot中有STOMP吗?

1 个答案:

答案 0 :(得分:0)

再次查看配置后,我发现了一个错字,这导致了连接RabbitMQ的问题。

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

但是配置是

app:
  stomp:
    user: xxxxxxxx