问题标签 [activemq-cpp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
102 浏览

activemq - ActiveMQ - 如何忽略未传递的消息

我有一个队列生产者(NON_PERSISTENT)和一个连接到我的 ActiveMQ 服务器的队列消费者。如果生产者在消费者未连接到 ActiveMQ 时向队列发送消息,则似乎在消费者启动并连接到 ActiveMQ 时已存储和传递消息。

如果消费者在交付时未连接,我希望 ActiveMQ 忽略该消息。我怎样才能做到这一点?

提前致谢。

0 投票
1 回答
219 浏览

activemq - ActiveMQ-cpp:尽管发生故障转移,但连接丢失

我正在使用 ActiveMQ 5.15.4,我的代理配置为 openwire 连接,如下所示:

...以确保我在 TCP 或 ActiveMQ 级别都没有超时。然后我的 ActiveMQ-cpp-3.9.4 客户端连接到以下故障转移 URL:

...以确保如果网络中断导致传输失败,客户端将自动重新连接。

客户端建立其初始连接并在几个“传输失败/传输恢复”故障转移周期中幸存下来,但始终如一地在几分钟内遇到无法恢复的传输故障(尽管网络正在恢复并且代理和客户端继续运行)。

客户端不发送任何消息,它只是订阅一个没有消息的主题。感觉像是超时,但我的理解是我的上述配置不应该发生超时。

任何想法为什么我的客户在失败后可能无法恢复传输?

0 投票
2 回答
2117 浏览

java - 从activemq连接工厂创建连接时Activemq在启动时失败

在我们的应用程序中,我们使用下面的纯 java 代码创建队列,但有时这会导致以下错误。

我知道它失败的原因是 jar,但我已经放置了所有最新的 jar,但它仍然失败。现在我不知道该怎么办?

ActiveMQ 启动代码

错误

javax.jms.JMSException: Could not create Transport. Reason: java.lang.RuntimeException: Fatally failed to create SystemUsageInvalid version: 11, org.apache.activemq.openwire.v11.MarshallerFactory does not properly implement the createMarshallerMap method.

使用的 JAR

activemq-broker-5.15.4.jar

activemq-client-5.15.4.jar

activemq-jaas-5.15.4.jar

activemq-kahadb-store-5.15.4.jar

activemq-openwire-legacy-5.15.4.jar

activemq-protobuf-1.1.jar

geronimo-j2ee-management_1.1_spec-1.0.1.jar

geronimo-jms_1.1_spec-1.1.1.jar

geronimo-jta_1.0.1B_spec-1.0.1.jar

slf4j-api-1.7.25.jar

0 投票
1 回答
230 浏览

activemq-cpp - ActiveMQCPP--无法发布到已删除的目的地:临时队列:

ActiveMQCPP 版本:3.7.1 AcitveMQBroker 版本:5.10.0

这是一个简单的例子。代码包括消费者和生产者

当我运行上面的示例生产者和消费者时,会发生以下情况:

  1. 生产者能够将消息放入队列。
  2. 消费者能够从队列中检索消息。
  3. 当消费者尝试使用replyTo desitnation发回响应时,发送失败并显示上面列出的错误消息。

在经纪人和消费者/生产者上,我关闭了咨询支持。当我打开它们时,这项工作很好。

我想知道的: 1. 我怎样才能使错误消失但仍然关闭咨询支持。

非常感谢你的帮助。

0 投票
1 回答
368 浏览

openssl - 无法使用 OpenSSL 1.1.1 构建 activemq CMS 3.9.5

ActiveMQ CPP 库版本 3.9.5 的 Readme.txt 状态

1.3 开放式SSL

如果您希望使用 SSL 传输,那么您需要在系统上安装 OpenSSL 及其包含的内容。我们建议您使用 1.0.0 或更高版本以获得最佳性能和安全性,但 0.9.8 版本也可以工作。

我正在尝试使用 Visual Studio 项目(包含在 activemq-cpp 3.9.5 发行版中)使用 OpenSSL 1.1.1 构建 activemq cms 3.9.5,并且看起来 CRYPTO_malloc_init() 已从 OpenSSL 1.1.1 中删除,因此我在 OpenSSLContextSpi.cpp 中出现编译错误

...而 OpenSSL 1.1.1 定义了另一个宏

我发现了以下 https://stackoverflow.com/questions/46005827/does-activemq-cpp-3-9-4-support-openssl-1-1-0/55131365#55131365 但我不清楚它是否是已解决并且我在正确构建它时遇到问题,或者版本 3.9.5 实际上不支持 OpenSSL 1.1.1?任何帮助或澄清将不胜感激

0 投票
1 回答
707 浏览

ssl - activemq-cpp c++​​客户端如何使用ssl url连接服务器

我目前正在使用 activemq-cpp c++​​ 客户端连接到后端服务器。使用 TCP 协议时,可以进行通信。我在https://activemq.apache.org/components/cms/example使用上面的示例。但现在我需要使用 SSL 协议。我的代码如下:

brokerURI ="故障转移:(ssl://xxxx:61617)";

auto connectionFactory = new ActiveMQConnectionFactory(brokerURI);

connectionFactory->setUsername(用户名);

connectionFactory->setPassword(密码);

连接=连接工厂->创建连接();

连接->开始();

我陷入了启动功能,没有抛出任何异常。我不知道为什么。能给我一个简单的c++ ssl代码连接demo让我学习吗?谢谢你。

0 投票
1 回答
158 浏览

c++ - 调用 onMessage 后 ActiveMQ 消费者内存使用量不断增加

我正在尝试使用 Flatbuffers 的 ActiveMQ。生产者的一切似乎都运行良好,但消费者的内存随着进程运行的时间不断增加。

生产者将消息标记为NON_PERSISTENT每秒发送约 30 次。每条消息都是一个字节消息,大约 3000 字节。

Producer.cpp

Consumer.cpp

然后,我打电话给Consumer

Consumer能够接收和处理消息。然而,记忆却在Consumer不断上升。运行 10 分钟后内存约为 200MB。在 CMS 概述中,他们提到传递给 的指针onMessage是调用所拥有的,所以我不应该尝试删除它。但是,调用者似乎从未删除该消息,这使得内存不断增加。

有什么方法可以在每次onMessage通话后释放消息的内存?

非常感谢您的时间和帮助。

0 投票
1 回答
65 浏览

c++ - CSActiveMQ CPP 生产者 - 一个会话可以使用多个队列吗?

在此处的问题和答复中:

ActiveMQ Producer 多队列一个会话

Java 解决方案涵盖了单个生产者向多个目的地发送消息的主题。

可以在 CPP/CMS 中做同样的事情吗?

我尝试使用 cms/activemq API 复制该代码,但是当我尝试将消息发送到不同的队列(目标)时,我收到错误消息,指出生产者只能发送到旧目标。

无需编写确切的代码,这里就是流程......

  • 创建新工厂
  • 设置代理 URI
  • 创建连接
  • 连接开始
  • 创建会话
  • 使用临时队列创建 MessageProducer
  • 创建一个新队列
  • 使用会话创建消息
  • MessageProducer 使用新队列和消息发送
0 投票
1 回答
316 浏览

c++ - ActiveMQ 主从故障转移丢失消息

涉及故障转移时,ActiveMQ 丢失了大量消息(仅在主题上)。生产者在主题中写入 1000 条消息,而(同时)消费者正在从同一主题中读取。在这个过程的中间,我关闭了 ActiveMQ 主服务器,并继续使用 ActiveMQ 从服务器。进行转换时,会丢失很多消息(约 100 条消息)。我正在开发的产品涉及不丢失消息。我可以做些什么来坚持主题?制片人:

消费者:

消费者耐用:

0 投票
1 回答
147 浏览

multithreading - ActiveMQ CMS 客户端多线程通过 pthread_create 确认消息

我对带有本地 C++ CMS 客户端 3.9.3 的 ActiveMQ 5.11 代理有疑问。我修改了官方网站上的示例代码,使用 pthread_create 函数生成一个新线程并尝试从新线程确认消息(CLIENT_ACK 模式)。事实证明存在分段错误。我们如何实现从新生成的线程而不是当前线程返回 ack?ActiveMQ C++ 客户端是否支持多线程确认消息?

当我运行消费者时,它甚至无法尝试确认一条消息:

这里的事情是,一旦消息对象退出 OnMessage 函数,所有的资源都没有了,无法传递给其他线程。

CMS API 文档清楚地说明了这一点:

我了解示例仅用于串行处理,但我真诚地要求进行并行处理,这意味着所有事情都不是在单个线程中完成的。如果是串行的,在当前消息被处理并返回 ack 之前,当前线程无法接收更多批次的消息。确实不能满足客户的性能需求。

那么任何人都可以说明 CMS API 是如何设计来处理并行性的吗?Receiver 线程只专注于接收OnMessage函数内部的消息,而其他业务线程则专注于业务处理并根据结果返回 ack。我只想知道 CMS API 如何处理并行性。这就是他们使用 CLIENT ACK 模式的方式。任何人都可以提供一个并行示例吗?