问题标签 [activemq]
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.
messaging - ActiveMQ 消息分发
我有几台从 Python 生成 xml 文件的服务器和一些使用 Java 使用这些 xml 的其他服务器。我最近才研究 JMS 和ActiveMQ并决定尝试使用它来传递 xml 文件。
所以我在消费者服务器上设置了 ActiveMQ 守护进程,并认为我会在产品上实现一些循环方法,以便将 xml 均匀地分布在消费者之间。
为了测试,我运行了一个生产者和一个消费者并查看了结果。
令我惊讶的是,来自生产者的消息分布在网络上的所有 ActiveMQ 服务器上。由于我只运行了一个消费者,它只接收到该机器上的 ActiveMQ 守护程序的 xml,其余的 xml 正在其他机器上的其他 ActiveMQ 守护程序上耐心等待。
编辑:这不是实际发生的事情,对不起。详情见下文
现在,我没有抱怨,因为无论如何这就是我想要的,但我有点困惑:实现我所追求的这个多对多队列的正确方法是什么?
我是否也应该在我的生产者机器上设置 ActiveMQ 守护程序,将 xmls 发送到 localhost ActiveMQs 并信任自动发现以将 xmls 发送给消费者?
为了安全起见,我应该坚持我原来的计划,并在消费者机器上循环消息吗?
或者是否有一个我应该使用的 API 来隐藏我的流程中的这些细节?
顺便说一句,生产者是使用 STOMP 的 python 进程,消费者是使用 JMS 的 java。
如果你的眼睛因我蹩脚的 ASCII 艺术而受伤,我深表歉意,我不确定我是否只用文字就足够清楚了。
编辑
显然,当我运行“一个生产者和一个消费者”时,我没有注意到其他消费者已经在运行。他们只是没有对他们处理的 xml 做任何有用的事情。这就是我看到部分结果的原因。
在阅读了更多内容并进行了一些实验之后,我发现了以下内容:
默认情况下,ActiveMQ 会自动发现本地网络上的其他 ActiveMQ 实例,并创建一个存储转发网络的 brokers。这意味着生产者可以将 xmls 发布到任何 ActiveMQ 实例,他们将找到自己的方式让消费者在同一网络上侦听其他 ActiveMQ 实例。
请注意,文档声称不建议将自动发现用于生产设置。
不过,下面接受的答案仍然适用。使用 ActiveMQ 最简单的方法就是使用一两个服务器作为“队列服务器”。尽管如此,我还是选择了我最初的计划,因为我认为它会减少网络流量(使用中间服务器,xmls 必须进入它并再次退出它)。
jms - ActiveMQ 消息分组性能
有人使用过 ActiveMQ 中的消息分组功能吗?
http://activemq.apache.org/message-groups.html
对于我正在从事的项目来说,这将是一个非常有用的功能,但我很好奇这个功能的扩展性和性能如何。在我们的系统中,我们需要将消息分组为大约 3-5 条消息的组,因此我们将在进程运行时不断添加组。在这种情况下,似乎我们最终会在尝试存储所有组时耗尽内存。
我对任何经验/想法/优点/缺点感兴趣。
jms - ActiveMQ 或 RabbitMQ 或 ZeroMQ 或
我们很想听听有关 ActiveMQ、RabbitMQ 和 ZeroMQ 优缺点的任何经验。也欢迎提供有关任何其他有趣消息队列的信息。
java - 进程内 ActiveMQ 生产者/消费者示例?
我正在研究在我的应用程序中使用 ActiveMQ 作为嵌入式进程内消息队列,但我对如何启动这样的应用程序有点困惑。我的设想是这样的(当然是伪代码):
我试图组装一个简单的版本,但我一直坚持如何编写生产者和消费者,以使他们永远工作,或者直到被告知退出。做这个的最好方式是什么?我说的是线程方面。我需要/想要在自己的线程中产生什么,等等......
我对基于消息队列的应用程序完全陌生,所以请详细说明您的示例。
message-queue - 为什么选择 ActiveMQ,而不是简单的 Queue/Mutex?
明天我将介绍我选择进程内消息队列实现的理由,但我无法阐明我的推理。我的共同设计者建议我们实现一个简单的异步队列,只使用一个基本的作业列表和一个互斥体来控制访问,我建议在嵌入式模式下使用 ActiveMQ。我个人对 ActiveMQ 印象深刻,我希望有一些好的、可靠的论据来支持我的直觉。
如果重要的话,应用程序基本上是 1 个生产者/n 个消费者,具有特定于正在处理的各个作业的优先级和类型信息。
值得注意的是,到目前为止,该解决方案的可管理性和可扩展性还不是强有力的论据。如果有人可以让我的论点更有力,我会很高兴。论坛能帮我解决吗?
http - ActiveMQ 5.2.0 + REST + HTTP POST = java.lang.OutOfMemoryError
首先,我是 JMS 和 ActiveMQ 的新手。
我一直在研究一种消息传递解决方案,作为消息生产者的中间件,该消息生产者将通过 HTTP POST 将 XML 消息插入队列。生产者是用 C++ 编写的现有系统,无法修改(因此 Java 和 C++ API 已出局)。
使用“演示”示例和一些试验和错误,我拼凑了一个我想要做的工作示例(在 Windows 框中)。
我在“webapps”下的测试目录中配置的 web.xml 指定从生产者接收到的 HTTP POST 消息将由 MessageServlet 处理。
我在“activemq.xml”中为文本应用添加了一行(“ow”是测试应用目录):
我创建了一个测试脚本来将消息“插入”到运行良好的队列中。
我遇到的问题是,当我继续通过 REST/HTTP POST 插入消息时,ActiveMQ 使用的内存消耗和线程数继续增加(当我有及时的消费者以及缓慢或不存在的消费者时会发生这种情况)。
当内存消耗达到 250MB 左右并且线程数超过 5000(如 Windows 任务管理器中所示)时,ActiveMQ 崩溃,我在日志中看到:
线程“ActiveMQ Transport Initiator:vm://localhost#3564”中的异常 java.lang.OutOfMemoryError:无法创建新的本机线程
就好像 Jetty 正在生成一个新线程来处理每个 HTTP POST,并且该线程永远不会死亡。
我确实看过这个页面:
http://activemq.apache.org/javalangoutofmemory.html
并尝试过,但这并没有解决问题(尽管我也没有完全理解更改的含义)。
有没有人有任何想法?
谢谢!
- 布鲁斯·罗斯
PS - 我在下面包含了“测试消息生产者”python 脚本,以了解它的价值。我创建了 100 条消息的批次,并继续从命令行手动运行脚本,同时在任务管理器中观察 ActiveMQ 的内存消耗和线程数。
java - 如何在 Java 密钥库中导入现有的 X.509 证书和私钥以在 SSL 中使用?
我在 ActiveMQ 配置中有这个:
我有一对 X.509 证书和一个密钥文件。
如何导入这两个以便在 SSL 和 SSL+stomp 连接器中使用它们?我可以谷歌搜索的所有示例总是自己生成密钥,但我已经有一个密钥。
我试过了
但这只会导入证书而不是密钥文件并导致
我尝试将证书和密钥连接起来,但得到了相同的结果。
如何导入密钥?
java - Spring JMS 消息侦听器容器
我是 JMS 新手,我正在使用 Tomcat 6 和 Spring 设置 ActiveMQ。我已经配置了大部分基本的东西,但是我对 Spring 提供的 Message Listener Containers 有点困惑。阅读文档,听起来消息侦听器容器用于“处理”订阅(我正在使用主题)、取消订阅并将消息传递给侦听器。我不确定我是否正确地考虑了这一点。如果是这种情况,我看不到任何关于如何让多个类使用消息侦听器容器订阅同一主题的文档。我看到您可以设置 messageListener 属性,但这只会允许一个类能够订阅一个主题。它没有
任何人都可以为我阐明这一点吗?我想我可能有点困惑。
提前致谢!
msmq - 消息平台
我们正在考虑在银行环境中集成两个核心系统的消息传递平台。我们正在研究开源选项。您使用过哪些产品,可以分享经验吗?