无法使用基于 JMS 的代码和 amqp 1.0 访问 ActiveMQ

2023-12-13

我正在尝试使用 AMQP 1.0 连接到 ActiveMQ 代理,但我想在我的应用程序代码中使用 JMS。我对使用 JMS 感兴趣主要是因为我希望开发人员能够使用他们已经熟悉的 API。

我在本地主机上运行 ActiveMQ 5.14.0 和以下代码:

    public static void main(String[] args) throws JMSException, InterruptedException {

    Connection connection = null;
    try {
        // Producer
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("amqp://localhost:5672");

        connection = connectionFactory.createConnection();
        connection.start();     

        Session session = connection.createSession(false,
                                                   Session.AUTO_ACKNOWLEDGE);

        Topic topic = session.createTopic("customerTopic");     

        // Publish
        MessageProducer producer = session.createProducer(topic);
        for ( int i = 0; i < 10; i++) {
            Message msg = session.createTextMessage("Task : " + i);

            producer.send(msg);

        }
        session.close();
    } finally {
        if (connection != null) {
            connection.close();
        }

    }


}

代码总是以同样的方式失败,堆栈跟踪中的根本原因如下:

Caused by: org.apache.activemq.transport.InactivityIOException: Channel was inactive for too (>30000) long: tcp://127.0.0.1:5672

这发生在connection.start()方法调用。

如果我对 ActiveMQ tcp 端点运行相同的代码,那么它会按预期执行。

我的 pom 文件依赖项如下(我怀疑这是我的问题的根源,因为我发现依赖项的文档非常难以理解)

<dependencies>
    <dependency>
        <groupId>org.apache.qpid</groupId>
        <artifactId>qpid-amqp-1-0-client-jms</artifactId>
        <version>0.32</version>
    </dependency>
    <dependency>
        <groupId>org.apache.activemq</groupId>
        <artifactId>activemq-amqp</artifactId>
        <version>5.14.0</version>
    </dependency>

</dependencies>

我直接的问题是“为什么这不起作用?”。

我的补充(基于意见)问题是“是否值得尝试使用 AMQP 1.0 之上的 JMS 抽象,或者我应该放弃学习特定于提供程序的 API?”


与 jndi 合作更好

public static void main(String[] args) throws JMSException, InterruptedException, NamingException {
    Connection connection = null;
    try {
        Properties props = new Properties();
        props.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.qpid.jms.jndi.JmsInitialContextFactory");
        props.setProperty("connectionfactory.myFactoryLookup",
                "amqp://localhost:5672");
        props.put("topic." + "MyTOPIC", "customerTopic");
        InitialContext ic = new InitialContext(props);
        ConnectionFactory cf1 = (ConnectionFactory) ic.lookup("myFactoryLookup");
        Topic topic = (Topic) ic.lookup("MyTOPIC");
        connection = cf1.createConnection();
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        MessageProducer producer = session.createProducer(topic);
        connection.start();
        for (int i = 0; i < 10; i++) {
            Message msg = session.createTextMessage("Task : " + i);
            producer.send(msg);
        }
        session.close();
    } finally {
        if (connection != null) {
            connection.close();
        }
    }
}

replace

 <dependency>
    <groupId>org.apache.qpid</groupId>
    <artifactId>qpid-amqp-1-0-client-jms</artifactId>
    <version>0.32</version>
</dependency>

by

    <dependency>
        <groupId>org.apache.qpid</groupId>
        <artifactId>qpid-jms-client</artifactId>
        <version>0.9.0</version>
    </dependency>

在经纪人方面,您需要添加:

 <transportConnector name="amqp" uri="amqp://0.0.0.0:5672?transport.transformer=jms"/>

ref http://activemq.apache.org/amqp.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法使用基于 JMS 的代码和 amqp 1.0 访问 ActiveMQ 的相关文章

  • 如何以编程方式检查应用程序是否在调试模式下运行?

    我必须在应用程序中的某个位置确定我的应用程序是在调试模式还是实时模式下运行 是否有任何函数或代码可用于检查 在开 关两种情况下都会返回 true false 如果是这样 请帮助我 提前致谢 从问题中尚不清楚调试模式是否指的是 应用程序是否可
  • JPA 实体中的方法是否允许抛出异常?

    我尝试创建的 Entity 有问题 当尝试使用 OpenJPA 实现在 Eclipse 中测试类时出现问题 我有not尝试过其他人 所以不确定它是否适用于他们 我的测试用例非常简单 因为它创建一个 EntityManagerFactory
  • Hamcrest 泛型地狱 #2:iterable With Size 给出错误“不适用于参数”

    在 hamcrest 中 1 3 RC2 没有 JUnit 依赖项 我使用失败iterableWithSize 我有一个 扩展 Iterator参数化为Content像这样EndResult
  • mvn dependency:analyze 结果不正确

    我一直在寻找一种工具 它能够向您显示未使用的依赖项 我很快就偶然发现了 Maven 命令mvn dependency analyze 这样做的问题是 它经常检测到 未使用的 依赖项 如果缺失 这些依赖项就会导致构建失败 这是优化项目的示例
  • JLabel.setText() 中的换行符

    使用 JLabel setText 时如何插入换行符 我尝试使用 Html 但似乎可以使其适用于 setText 仅适用于 jLabel 的初始声明 最初声明 jlabel 时的方法是 label new JLabel Hello Worl
  • 仅使用 ServletContext 查找应用程序的 URL

    我正在使用 Spring MVC 编写一个 Java Web 应用程序 我有一个后台进程 它会遍历数据库并查找必须通过电子邮件发送给我的用户的通知 这些电子邮件需要包含应用程序的超链接 对于网络应用程序来说 这似乎是相当常见的模式 但我遇到
  • 用户“root”@“localhost”的访问被拒绝

    我正在尝试从数据库中获取记录 但我面临这个访问被拒绝的问题 我尝试了 Stack Overflow 上提到的其他解决方案 例如向用户授予权限 但没有任何效果 访问数据库的代码 public void service HttpServletR
  • Android - Java - 发送 facebook 聊天消息的意图(facebook 禁用 xmpp)

    Facebook 已弃用 xmpp API 有没有办法打开意图 或将数据传递到fb 以在Android设备上发送聊天消息 设备上安装的 Facebook 和 Messenger 应用 谢谢 您需要将 uri 传递给意图 这里10000572
  • 带有 spring-kafka 的 Kafka 死信队列 (DLQ)

    最好的实施方式是什么死信队列 DLQ Spring Boot 2 0 应用程序中的概念 使用 spring kafka 2 1 x 来处理无法处理的所有消息 KafkaListener某些bean发送到某些预定义的Kafka DLQ主题的方
  • Spring Batch:比较数据库之间的数据

    我有两个数据库 Oracle 和 MySQL 目标是将Oracle表中的值保存到MySQL中 要求 MySQL表中不存在数据 但我在理解 Spring Batch 时遇到了困难 步骤中 它包含itemReader itemProcessor
  • 如何提高 Guice 启动时的性能

    好吧 我知道我的计算不客观等等 但无论如何 我讨厌在执行单元测试时等待这么多时间 我的 guice swing 应用程序需要大约 7 秒来初始化 这是一个简单的 IRC 客户端 在那一刻 没有打开连接 我什至还没有调用任何 java io
  • 按位非运算符

    为什么要按位运算 0 打印 1 在二进制中 不是0应该是1 为什么 你实际上很接近 在二进制中 不是0应该是1 是的 当我们谈论一位时 这是绝对正确的 然而 一个int其值为0的实际上是32位全零 将所有 32 个 0 反转为 32 个 1
  • java3d 中的面部着色

    使用java3d 如何不在每个顶点基础上着色 而是在每个面基础上着色 我尝试学习 java3d 但我生成的 Shape3d 看起来并不符合预期 我想用不同的颜色给不同的三角形着色 但我不知道该怎么做 纹理看起来有点大材小用 而且我根本没有掌
  • Java 中 LINQ 的等价物是什么? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Java 中 LINQ 的等价物是什么 没有什么比 LINQ for Java 更好的了 Edit 现在
  • 在Java中一个接一个地播放WAV文件

    我正在尝试玩几个WAV http en wikipedia org wiki WAV文件一个接一个 我尝试了这个方法 for String file audioFiles new AePlayWave file start 但这会同时播放它
  • JFreeChart MeterPlot

    我目前正在用java做Agent项目 在某些时候 我需要显示一个仪表 例如 电池电量 我的程序中有 5 个代理 每个代理都会创建自己的带有名称的仪表图 但不知何故他们没有更新数据集 或者他们正在更新数据集 只是它没有显示在仪表图上 任何想法
  • GAE - Eclipse 中的开发服务器未更新?

    我在 Eclipse 上使用 Google AppEngine 开发服务器 我的本地网页似乎没有更新 直到我在开发服务器上进行了多次重新启动 使用 Eclipse 中的 运行 或 调试 按钮 我究竟做错了什么 基本流程是 更改 java 文
  • java.lang.NoSuchMethodError:com.fasterxml.jackson.databind.type。使用 apache beam Spark runner 运行 go 示例时

    我想跑grades https github com apache beam tree master sdks go examples gradesapache beam go sdk 提出的示例 在一个主服务器和两个从服务器 spark2
  • 如何实现再次播放功能?

    我希望在游戏结束时得到提示 如果我还想再玩一次的话 并使用 Y N 输入 退出游戏或重复游戏 我该如何以最有效的方式解决这个问题 编辑 描述资源路径位置类型 类型 Main Main java ScaredyCat src se grupp
  • 文件构造函数说明

    我无法理解以下文件构造函数 public File String parent String child and public File File parent String child 参数有什么作用parent and child该文件

随机推荐

  • jQuery:检查图像是否存在

    我正在通过 jQuery ajax 加载图像路径 在显示图像之前我想检查它是否确实存在 我可以使用图像加载 就绪事件或类似的事件来确定文件路径是否有效 将 myimage 设置为显示 无 我希望做类似的事情 myimage attr src
  • 从另一个网页提取信息

    我有这个 test php 其中有以下信息 callername1 Fernando Verdasco1 callername2 Fernando Verdasco2 callername3 Fernando Verdasco3 calle
  • 如何捕获Key_tab事件

    我正在尝试捕获 key tab 事件 但没有运气 我意识到它只有在没有其他小部件的情况下才有效 因此光标无处可去 只有这样我才能让事件返回 这是一个简化的代码示例 class MyCombo QComboBox def init self
  • Java 区分大小写吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我在某处读到Java 是区分大小写的 我一直无法证实这一点 是吗 如果是这样 为什么 我在某处读到Java 是区分大小写的 我一直无法证实这一点 Java 源代码区分大小写 如果您是
  • Go 可变参数函数参数传递

    我试图理解 函数中第一个和第二个传递参数有什么区别 在这两种情况下 方法都是有效的并且可以编译 1 generateReport capacities func generateReport capacities float64 for i
  • CustomAdapter 中 ViewHolder 内的 butterknife @OnClick

    我目前正在学习 Butterknife 我需要在客户适配器生成的不同视图上绑定特定的 OnClicks 我该怎么做呢 我在这里的一个问题中看到了一个答案 说他在 ViewHolder 内使用 onclick 我不确定如何准确地实现这一点 有
  • Python 中范围作为字典键

    因此 我有一个想法 可以使用一系列数字作为字典中单个值的键 我写了下面的代码 但我无法让它工作 有可能吗 stealth roll randint 1 20 select from a dictionary of 4 responses u
  • 将变量与多个值进行比较的简洁方法[重复]

    这个问题在这里已经有答案了 我一直试图了解是否可以使用类似于我在下面演示的 if 语句 据我了解不是吗 for i in range 10 if i 3 or 5 or math sqrt i 3 or 5 numbers append i
  • 哪种哈希算法对于密码来说最安全? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 根据http php net manual en function hash php 有一个php哈希方法 hash 它支持以下所有方法 但我想知道 绝对最安全的密码哈希方法是什
  • Azure 函数 blob 绑定

    如果不使用 C 实现 不是 CSX 中的 BlobAttribute 我无法将 blob 类型的输入参数绑定到 string TextReader 我收到的错误是 Microsoft Azure WebJobs Host Error ind
  • 在 Angular 2 中,我有 2 个父组件需要发出和监听,但我的代码不起作用

    在 Angular 2 中 我有 2 个父组件需要发出和监听 但我的代码不起作用 我基本上有一个父组件需要向另一个父组件进行广播 以便该组件可以自行更新 这是我发出的组件 Output userUpdated new EventEmitte
  • 如何在终端上滚动消息?

    我正在尝试编写一个程序来充当使用的选框curses h library创建横向滚动显示 应该发生的情况是 我的消息 Hello 应该从终端的右侧逐个字符地滚动到左侧 hello 应该在终端上滚动 如下所示 H fist frame of a
  • Spring中如何更新数据源bean?

    我的目标是用 Spring 创建一个 Web 服务器 它必须实现多租户 如果您不使其动态化 添加 删除 更改 它会非常有效 Spring中是否可以更新数据源bean My code SpringBootApplication public
  • Scrapy/Splash 单击按钮,然后从新窗口中的新页面获取内容

    我面临的问题是 当我单击按钮时 Javascript 会处理该操作 然后重定向到带有新窗口的新页面 这类似于您单击 a 有目标 Blank 在 scrapy splash 中 我不知道如何从新页面获取内容 我的意思是我不知道如何控制该新页面
  • 无法将常量添加到 R 中的向量

    我不知道发生了什么 但我似乎无法向向量添加常量 例如 在控制台中键入 c 1 2 3 4 5 将返回 15 而不是 6 7 8 9 我究竟做错了什么 感谢您的帮助 有人 可能是你 重新定义了 功能 这很容易做到 gt lt function
  • Apache - 使用 .htaccess 将 jpg 重写为 URL

    您好 我尝试从 jpg 文件重定向到特定的 URL 地址 但它不起作用 某人可以帮助我吗 RewriteEngine On RewriteBase RewriteCond REQUEST URI jpg NC RewriteRule up
  • 使用 C 从 C++ 访问公共类内存

    大家好 我目前正在 UNIX 上用 C C 和 fortran 编写多语言程序 不幸的是 当我尝试编译后执行时 遇到 分段错误 我已将问题范围缩小到程序的 C 和 C 部分之间的接口 第一部分由 main ccp 和 SA cpp 组成 第
  • 安装 MS Platform SDK 后在 Visual C++ 2008 中编译时出错

    我正在使用 OpenCV 在安装 Microsoft Platform SDK 来使用 OpenGL 后 尝试编译我的 opencv 项目时会出现这些错误 1 gt d program files microsoft platform sd
  • Socket.IO 基本示例不起作用

    我对 Socket IO 是 100 的新手 刚刚安装了它 我试图遵循一些示例 并且可以让服务器端运行 但我似乎无法连接客户端 以下是我的 server js var http require http io require socket
  • 无法使用基于 JMS 的代码和 amqp 1.0 访问 ActiveMQ

    我正在尝试使用 AMQP 1 0 连接到 ActiveMQ 代理 但我想在我的应用程序代码中使用 JMS 我对使用 JMS 感兴趣主要是因为我希望开发人员能够使用他们已经熟悉的 API 我在本地主机上运行 ActiveMQ 5 14 0 和