问题标签 [mom]
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.
java - 跨多个队列的 ActiveMQ 消息组消费者选择?
ActiveMQ 消息组是跨多个消费者进行负载平衡的绝佳功能。简而言之:根据嵌入在消息中的组标识符(JMSXGroupID
),消息流被划分为单个队列的多个消费者。(因此,消费者 1 将获得所有带有 的消息JMSXGroupID = a
,消费者 2 将获得带有 的所有消息JMSXGroupID = b
,依此类推。)
现在,假设您有 2 个队列:A
和B
,并假设JMSXGroupID
在流经两个队列的消息中使用了一致的 s 分类法。代理在队列中选择的消费者是否会是代理JMSXGroupID = ABC
在队列中选择A
的同一连接中的消费者?JMSXGroupID = ABC
B
我怀疑这个问题的答案是“不”。有太多变量在起作用:如果代理选择的消费者A
没有对应的消费者会发生什么B
?如果代理选择的消费者A
有多个对应的消费者,会发生B
什么?在这些情况下,没有明显的正确答案。
但是,我们可以模拟这种行为吗?例如,复合目的地上的消费者可能是一个可行的解决方案——确保所有消费者都在复合目的地上A
并B
在复合目的地上消费,A,B
并且您可能正在开展业务——但 ActiveMQ 似乎不支持从复合目的地消费。
我发现的唯一解决方案是简单地将消息推送到一个队列上——称之为——A
并在其上拥有一个独占消费者。您现在必须区分“ messages”和“ messages”,但您可以使用标题轻松做到这一点。B
AB
A
B
然而,这个解决方案闻起来很有趣。(您现在必须假设生产者会尽职尽责地将特殊标头应用于他们的消息,或修改您的有效负载。)是否有一种解决方案可以确保消费者跨越两个单独的队列A
并B
始终位于同一个连接上?
java - 使用 JMS 时处理 JMSExceptions,特别是 ActiveMQ?
在以下代码段中:
被抓者在什么情况下被JMSException
抛出?当它发生时,处理的正确方法是JMSException
什么?我已经阅读了 JMS 和 ActiveMQ 文档的相关部分,它似乎没有在这一点上提供任何指导(显然,除了使用try
/ catch
。)另外请原谅人为的代码示例!
例如,如果以某种方式“变坏”了,是否JMSException
会发生session
,所以拆掉并重新开始是正确的consumer
事情session
?或者这是否意味着connection
已经变坏了,所以我应该拆除并重建应用程序中基于该连接的所有内容?或者呼叫能否以createConsumer()
暂时的方式失败,并且使用同一会话重试呼叫可能会成功?
类似地,这些行什么时候会抛出一个JMSException
,忽略类似于封闭的Session
或Connection
:
我想了解JMSException
一般应如何在 JMS 中处理 s,但特定于 ActiveMQ 的答案也很好。(事实上,任何答案都可能必须针对特定的实现,因为 JMS 只是一个规范。)
java - 检测异步 JMS MessageConsumer 何时出现异常?
我正在使用MessageConsumer
带有MessageListener
. 如果发生某些事情导致MessageConsumer
停止接收和处理消息——例如,如果底层连接关闭——我如何检测到它?我在规范中似乎没有任何通知机制。
我认为这个问题很清楚,但如果你想让我发布代码来澄清这个问题,那就问吧!
如果它很重要,我使用的是 ActiveMQ 5.8,尽管显然我想要一个不是特定于实现的方案。
rest - MOM在异构集群系统中的使用
如果有一个异构分布式集群系统,例如让我们假设集群服务器系统,我们可以在那里使用MOM(面向消息的中间件)吗?如果可以,你能给我一些关于它如何实现的例子。
azure - RabbitMQ 对比 适用于 Microsoft Azure 云平台的 MSMQ
我想在 Microsoft Azure 云平台上使用面向消息的中间件 (MOM)。我在 RabbitMQ 和 MSMQ 之间做了一些比较。第一个似乎更适合我的情况。与 RabbitMQ 不同,它更易于使用,并且需要在 MSMQ 中实现监控和管理等功能。
但是由于MSMQ是微软的产品,我认为它会比RabbitMQ更兼容微软Azure云平台。
任何链接或建议都会有所帮助。谢谢你。
activemq - 带故障转移的 ActiveMQ 转发桥
这是我尝试使用 ActiveMQ 实现的目标:我想要 2 个代理集群:clusterA 和 clusterB。这两个集群之间的数据应该被镜像。因此,当 clusterA 收到一条消息时,它将存储在 storageA 中,并且该消息应该转发给 clusterB(如果有这样的需求)并存储在 storageB 中。另一方面,如果clusterB 收到一条消息,它应该被转发到clusterA。我想知道根据上面的描述,这样的配置是否被认为是有效的:
activemq - ActiveMQ 故障转移似乎不起作用
我有一个超级简单的场景:一个经纪人和一个具有持久订阅的消费者。这是我的消费者应用程序的代码:
这是我的 activemq.xml
当我让代理和消费者都运行然后停止代理时,我的消费者会在几分钟后退出。据我了解,它必须尝试重新连接,但事实并非如此。我做错了什么,请指教。
!笔记!我在 Eclipse 中启动了我的消费者,我没有为此任务构建独立的 jar。
我已将我的经纪人更新到最新的 5.9.1,并对我的消费者做了同样的事情。结果是一样的——在我停止代理后,我的消费者几秒钟后就死了。如果代理启动并运行,它工作正常。
performance - 为什么要为 MOM 使用 JMS
我真的很好奇这个话题。我将为内部系统创建一个通信机制,并且可能还需要连接到一些外部客户端。内部模块也是分布式系统。我需要在这些模块之间创建一个 ESB。该系统应该为数百万用户提供高性能。
发布订阅或 p2p 通信都需要,
当我第一次开始考虑这种实现时,我计划在前面制作一个 REST api,REST api 将与 JMS 总线进行通信。JMS 总线具有提供内部系统之间通信的能力。
不幸的是,根据我的调查,使用 JMS 可能会导致如此严重的问题:性能、可扩展性......而且看起来 JMS 是不必要的,我可以在内部模块上创建一些适配器,并且两者都可以与 REST 服务通信。
有谁知道我为什么要使用 JMS 进行内部通信?
jms - 临时队列的性能和限制
我想要一堆数百个客户端应用程序在中间件的一个实例上创建和使用临时队列。
为什么我不应该使用临时队列,是否有一些关于性能的缺点?是否有限制,例如多少温度。每个 HornetQ 实例可以创建队列吗?
message-queue - 具有广播和路由功能的轻量级消息总线?
我正在尝试找到可以处理以下内容的最轻量级的消息总线(队列?):
- 生产者 A 订阅总线。总线是通过众所周知的标识形式(如名称、套接字或其他东西)指定的。
- 消费者 B 订阅相同的总线并仅注册某种类型的消息。
- 消费者 C 订阅了同一条总线,并注册了另一种与 B 重叠的消息。
- 生产者 A 将一条消息放入总线,使 B 和 C 都感兴趣。B 和 C 都接收到消息(不仅仅是其中一个,而是两个)。
A、B、C 和总线位于不同的机器中。