java - 如何使用 ActiveMQ 设置 Spring Cloud Bus?

标签 java spring-cloud

我想在我的项目中使用 Spring Cloud Bus 来动态更新配置。 我们的环境中已经有了 Apache ActiveMQ。 有没有可能使用 ActiveMQ 而不是 RabbitMQ 作为代理? 它们都是一种AMQP服务器。

我像这样在 pom.xml 中设置依赖关系:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>

它看起来像一个标准的 AMQP 启动器,不限于 RabbitMQ。 但是在config server启动的时候出现如下错误日志提示:

org.springframework.amqp.AmqpIOException: java.io.IOException
    at org.springframework.amqp.rabbit.support.RabbitExceptionTranslator.convertRabbitAccessException(RabbitExceptionTranslator.java:65)
    at org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.createBareConnection(AbstractConnectionFactory.java:218)
    at org.springframework.amqp.rabbit.connection.CachingConnectionFactory.createConnection(CachingConnectionFactory.java:476)
    at org.springframework.amqp.rabbit.connection.ConnectionFactoryUtils$1.createConnection(ConnectionFactoryUtils.java:80)
    at org.springframework.amqp.rabbit.connection.ConnectionFactoryUtils.doGetTransactionalResourceHolder(ConnectionFactoryUtils.java:130)
    at org.springframework.amqp.rabbit.connection.ConnectionFactoryUtils.getTransactionalResourceHolder(ConnectionFactoryUtils.java:67)
    at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.start(BlockingQueueConsumer.java:439)
    at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:1083)
    at java.lang.Thread.run(Thread.java:745)

Caused by: java.io.IOException: null
    at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:106)
    at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:102)
    at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:350)
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:648)
    at org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.createBareConnection(AbstractConnectionFactory.java:205)
    ... 7 common frames omitted
Caused by: com.rabbitmq.client.ShutdownSignalException: connection error
    at com.rabbitmq.utility.ValueOrException.getValue(ValueOrException.java:67)
    at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:37)
    at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:367)
    at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:293)
    ... 9 common frames omitted
Caused by: com.rabbitmq.client.MalformedFrameException: AMQP protocol version mismatch; we are version 0-9-1, server sent signature 0,1,0,0
    at com.rabbitmq.client.impl.Frame.protocolVersionMismatch(Frame.java:174)
    at com.rabbitmq.client.impl.Frame.readFrom(Frame.java:111)
    at com.rabbitmq.client.impl.SocketFrameHandler.readFrame(SocketFrameHandler.java:139)
    at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:536)
    ... 1 common frames omitted

最佳答案

Is there any possible to use ActiveMQ instead RabbitMQ as the broker?

据我所知ActiveMQ只提供AMQP 1.0,而rabbit client是0.9.1,所以答案是否定的。如果您为 AMQP 1.0 或 JMS 或 ActiveMQ 中的其他协议(protocol)之一提供了 spring-cloud-stream 绑定(bind)器,您可能能够以这种方式使用它(在 Spring Cloud 的 Brixton 版本中)。不过,它们并非开箱即用,因此您必须自己编写。

关于java - 如何使用 ActiveMQ 设置 Spring Cloud Bus?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35601267/

相关文章:

java - 为什么我不能使用 Spring 和 Blossom 注解?

java - 使用 Java 流收集在 `for` 循环中生成的对象

java - Spring JmsTemplate 是否默认关闭连接?

Spring Cloud Sleuth 不同的跟踪 ID 与 Kafka 集成

java - 我应该在 GKE 引擎上部署 api-gateway 吗?

java - 如何使用 Apache 文件上传实用程序根据文件名设置最大文件大小

java - eclipse可以将类文件中的第二个类提取到自己的文件中吗

java - Spring Cloud 配置到 java util 属性

amazon-elastic-beanstalk - 是否可以在 Elastic Beanstalk 上运行 Spring Cloud AWS 应用程序?

spring-cloud - Spring Cloud |假装 Hytrix |首次调用超时