问题标签 [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.
activemq - ActiveMQ - 如何忽略未传递的消息
我有一个队列生产者(NON_PERSISTENT)和一个连接到我的 ActiveMQ 服务器的队列消费者。如果生产者在消费者未连接到 ActiveMQ 时向队列发送消息,则似乎在消费者启动并连接到 ActiveMQ 时已存储和传递消息。
如果消费者在交付时未连接,我希望 ActiveMQ 忽略该消息。我怎样才能做到这一点?
提前致谢。
activemq - ActiveMQ-cpp:尽管发生故障转移,但连接丢失
我正在使用 ActiveMQ 5.15.4,我的代理配置为 openwire 连接,如下所示:
...以确保我在 TCP 或 ActiveMQ 级别都没有超时。然后我的 ActiveMQ-cpp-3.9.4 客户端连接到以下故障转移 URL:
...以确保如果网络中断导致传输失败,客户端将自动重新连接。
客户端建立其初始连接并在几个“传输失败/传输恢复”故障转移周期中幸存下来,但始终如一地在几分钟内遇到无法恢复的传输故障(尽管网络正在恢复并且代理和客户端继续运行)。
客户端不发送任何消息,它只是订阅一个没有消息的主题。感觉像是超时,但我的理解是我的上述配置不应该发生超时。
任何想法为什么我的客户在失败后可能无法恢复传输?
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
activemq-cpp - ActiveMQCPP--无法发布到已删除的目的地:临时队列:
ActiveMQCPP 版本:3.7.1 AcitveMQBroker 版本:5.10.0
这是一个简单的例子。代码包括消费者和生产者
当我运行上面的示例生产者和消费者时,会发生以下情况:
- 生产者能够将消息放入队列。
- 消费者能够从队列中检索消息。
- 当消费者尝试使用replyTo desitnation发回响应时,发送失败并显示上面列出的错误消息。
在经纪人和消费者/生产者上,我关闭了咨询支持。当我打开它们时,这项工作很好。
我想知道的: 1. 我怎样才能使错误消失但仍然关闭咨询支持。
非常感谢你的帮助。
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?任何帮助或澄清将不胜感激
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让我学习吗?谢谢你。
c++ - 调用 onMessage 后 ActiveMQ 消费者内存使用量不断增加
我正在尝试使用 Flatbuffers 的 ActiveMQ。生产者的一切似乎都运行良好,但消费者的内存随着进程运行的时间不断增加。
生产者将消息标记为NON_PERSISTENT
每秒发送约 30 次。每条消息都是一个字节消息,大约 3000 字节。
Producer.cpp
Consumer.cpp
然后,我打电话给Consumer
:
Consumer
能够接收和处理消息。然而,记忆却在Consumer
不断上升。运行 10 分钟后内存约为 200MB。在 CMS 概述中,他们提到传递给 的指针onMessage
是调用所拥有的,所以我不应该尝试删除它。但是,调用者似乎从未删除该消息,这使得内存不断增加。
有什么方法可以在每次onMessage
通话后释放消息的内存?
非常感谢您的时间和帮助。
c++ - CSActiveMQ CPP 生产者 - 一个会话可以使用多个队列吗?
在此处的问题和答复中:
Java 解决方案涵盖了单个生产者向多个目的地发送消息的主题。
可以在 CPP/CMS 中做同样的事情吗?
我尝试使用 cms/activemq API 复制该代码,但是当我尝试将消息发送到不同的队列(目标)时,我收到错误消息,指出生产者只能发送到旧目标。
无需编写确切的代码,这里就是流程......
- 创建新工厂
- 设置代理 URI
- 创建连接
- 连接开始
- 创建会话
- 使用临时队列创建 MessageProducer
- 创建一个新队列
- 使用会话创建消息
- MessageProducer 使用新队列和消息发送
c++ - ActiveMQ 主从故障转移丢失消息
涉及故障转移时,ActiveMQ 丢失了大量消息(仅在主题上)。生产者在主题中写入 1000 条消息,而(同时)消费者正在从同一主题中读取。在这个过程的中间,我关闭了 ActiveMQ 主服务器,并继续使用 ActiveMQ 从服务器。进行转换时,会丢失很多消息(约 100 条消息)。我正在开发的产品涉及不丢失消息。我可以做些什么来坚持主题?制片人:
消费者:
消费者耐用:
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 模式的方式。任何人都可以提供一个并行示例吗?