首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache ActiveMQ AMQP Spring

Apache ActiveMQ AMQP Spring
EN

Stack Overflow用户
提问于 2022-05-10 17:08:52
回答 1查看 310关注 0票数 -1

我有一个带有协议AMQP的ActiveMQ AWS服务。AWS返回给我:

代码语言:javascript
复制
failover:(amqp+ssl://b-ca138bd4-e6c4-4596-8329-f11bebf40111-1.mq.us-east-1.amazonaws.com:5671,amqp+ssl://b-ca138bd4-e6c4-4596-8329-f11bebf40111-2.mq.us-east-1.amazonaws.com:5671)

我正在尝试使用Spring实现与那个端点的连接,但是我有很多问题。我尝试过很多种方法,但是我无法使用Spring连接到ActiveMQ。

我试过:

创建许多配置Beans,如:

代码语言:javascript
复制
@Bean
fun connectionFactory(): ConnectionFactory {
    val activeMQConnectionFactory = ActiveMQConnectionFactory()
    activeMQConnectionFactory.brokerURL = "amqp+ssl://b-ca138bd4-e6c4-4596-8329-f11bebf40111-1.mq.us-east-1.amazonaws.com:5671"
    activeMQConnectionFactory.trustedPackages = listOf("com.rappi.scaffolding")
    return activeMQConnectionFactory
}

并使用许多依赖项,如:

代码语言:javascript
复制
implementation("org.apache.activemq:activemq-spring:5.17.0")
implementation("org.springframework:spring-jms")

代码语言:javascript
复制
implementation("org.springframework.boot:spring-boot-starter-artemis")

但不可能为我建立起联系。此时此刻,我看到了这个错误:

代码语言:javascript
复制
Reason: java.io.IOException: Transport scheme NOT recognized: [amqp+ssl]

在Java或Kotlin或指南中有一些使用AMQP协议将我与AWS连接的示例?我在谷歌里没有找到任何东西。

我读过使用QPid的那篇文章,但它对我不管用。

我已经找到了许多使用兔子的例子,但没有使用Apache ActiveMQ协议amqp+ssl。

最后,它使用Bean工作:

代码语言:javascript
复制
@Bean
    fun connectionFactory(): ConnectionFactory {
        return JmsConnectionFactory(
            "failover:(amqps://b-ca138bd4-e6c4-4596-8329-f11bebf40111-1.mq.us-east-1.amazonaws.com:5671,amqps://b-ca138bd4-e6c4-4596-8329-f11bebf40111-2.mq.us-east-1.amazonaws.com:5671)").apply {
            this.username = user
            this.password = passwordAQ
        }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-10 18:02:03

您的代码和配置有很多错误。

First,您为客户端使用的URL是不正确的。amqp+ssl方案对任何客户端无效。这是用于在ActiveMQ代理配置中定义连接器的方案。

第二个,您的依赖项是错误的。从客户的角度来看,你只需要:

代码语言:javascript
复制
implementation("org.apache.qpid:qpid-jms-client:1.6.0")

当然,如果您使用Spring,您将需要所有相关的Spring依赖项,但就客户端本身而言,这就是您所需要的。

第三代,您的代码是错误的。你应该使用这样的东西:

代码语言:javascript
复制
@Bean
fun connectionFactory(): ConnectionFactory {
    return new org.apache.qpid.jms.JmsConnectionFactory("failover:(amqps://b-ca138bd4-e6c4-4596-8329-f11bebf40111-1.mq.us-east-1.amazonaws.com:5671,amqps://b-ca138bd4-e6c4-4596-8329-f11bebf40111-2.mq.us-east-1.amazonaws.com:5671)");
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72190446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档