问题标签 [jms-topic]

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 回答
380 浏览

jms - 在 JBoss ESB 中发布订阅者设计并保证交付

我在设计将在 JBoss ESB 上运行的发布/订阅服务时遇到问题。我需要能够将消息发布到一个主题,大概有 200 个订阅者会收听,一旦他们收到消息,他们就会对消息做一些事情。我正在编写发布服务和一个示例订阅服务来展示它是如何完成的。

我需要保证向这些订户交付。如果他们离线一段时间,并且消息在这段时间内发布,当他们重新上线时,这些消息需要传递。所以我认为这意味着他们需要是持久的订阅者(我的理解是主题不是持久的,但订阅者被定义为持久的)。

我现在有一个发布服务,它将 ESB 消息粘贴到 ESB Aware Queue 上,该队列调用 NotifyTopic,它将消息粘贴到 ESB-Unaware Topic 上。我有一个订阅者,它有一个 ESB-Unaware 主题的侦听器,它使用一个 httprouter 调用一个 web 服务,它发送消息以由我的 web 服务处理。一切正常 - 除非我的 web 服务处于脱机状态(我必须弄清楚如何处理这种情况,但我什至还没有),或者我的 ESB 订阅服务处于脱机状态(我通过卸载它进行测试,发送一个很少发布消息,然后重新安装它 - 没有积压的消息发送到我的网络服务)。

我很确定我没有正确构建订阅者。我认为我需要将订阅者部署在 ESB 上。我不确定它会如何工作,如何将它部署在不同的服务器上,然后仍然连接到 ESB(试图避免与相互 ssl、防火墙、端口等混淆)。我认为将订户安装在 ESB 上将是最佳选择。但我不知道如何让它耐用/保证交货。

0 投票
2 回答
810 浏览

database - 仅使用一次 JMS 主题

我有一个产生独特消息的 JMS主题。

而且我在n台机器(客户端)上部署了一个简单的 webapp,它所做的就是将使用的 msg 放入另一个系统(目标系统)。

笔记:

  • 无法控制 JMS。
  • 确实可以控制客户。
  • 无法控制将由客户端接收消息的目标系统。

我的问题是:

如何确保消息被其中一个客户端写入一次(到目标系统),并且永远不会被另一个客户端再次写入(好像 JMS 是队列而不是主题),知道每个 msg 都有一个 uniqueId?

我正在考虑两种解决方案:

  1. 创建另一个从该主题消费的 JMS 队列,并且该队列将由n 个客户端之一为每个 msg 消费一次。

  2. 有某种共享位置(memcache),其中包含已使用 msgs 的消息 ID,并且在客户端将已使用 msg 发送到目标系统之前,我必须检查共享存储(memcache)之前是否具有此 ID,如果然后不发送到目标系统。

你怎么看?

更新

最终得到消息的系统不是 RDBMS,甚至不在我的控制之下。我只是将一些味精从一个系统传送到另一个系统。(实际上是 Apache Flume 不受我控制)

0 投票
2 回答
3750 浏览

filter - Camel 消息过滤 - 正文内容过滤

我是 Camel 的新手,希望找到一个基于正文内容过滤 JMS 主题消息的选项。我查看了用于过滤的不同语言,例如简单、OGNL、groovy 等,但无法弄清楚如何将其应用于基于内容的过滤这是我需要从中过滤的 JMS 消息/内容的示例 -

过滤条件应该是“文本”或 body() 包含“iphone”(忽略大小写)类似于 -

任何想法/建议将不胜感激。

谢谢!!!

0 投票
1 回答
1377 浏览

jms - 使用主题(发布和订阅),何时将消息从主题中删除?

假设有许多 MQ 客户端连接到一个主题以接收消息。

我的问题是 MQ 服务器何时会从主题中删除消息?

0 投票
1 回答
6016 浏览

activemq - ActiveMQ JMS 主题 - 删除旧消息

有没有办法监控 ActiveMQ JMS 主题中的消息,最重要的是删除旧消息,例如删除一个月前的消息。

我正在使用 Apache Camel 构建 ActiveMQ 连接和 JMS 主题。

0 投票
3 回答
1703 浏览

java - 我应该多久实例化一次 JMS 主题连接和会话

我刚刚开始获取知识并使用 JMS(activemq)。伪代码如下所示

// 1. TopicConnectionFactory tcf = (TopicConnectionFactory) ctx.lookup("XXConnFactory");

// 2. TopicConnection connection = tcf.createTopicConnection();

// 3. TopicSession topicSession = connection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);

然后使用 topicSession 我创建发布者并调用 publish() 方法。

问题是,我什么时候初始化 TopicConnection/TopicSession。是否就像我可以初始化一次 TopicConnection 并使用相同的连接来为每个呼叫获取会话?

基本上我想知道哪些可以实例化一次,哪些应该为每次调用实例化。

0 投票
0 回答
39 浏览

java - 我无法在 DurableSubscriber 上消费大消息

我的 Java 程序在 VMWare-Windows-Server 上运行,它连接到 SOA 总线并从DurableSubscriber. 它运行了 2 年没有问题。

自上周以来,它无法收到任何消息。在调试模式下(连同服务器端),我们发现了问题。如果消息“太大”,则连接断开。我们试过7MB,没问题,12MB失败。普通消息只有大约2KB

未找到错误消息。

我们的假设是:

  1. 堆大小
  2. 暂停

但我真的不知道如何解决它们。有人可以帮我吗?谢谢!

这里有一些代码:

0 投票
2 回答
1265 浏览

jms - 将使用的消息从主题移动到队列

假设我有几个订阅者从一个主题消费。在将消息传递给所有订阅者后,我想触发一个在输入中使用此消息的作业。

因此,最简单的方法是将已成功传递给所有订阅者的消息移动到一个队列中,我的工作将从该队列中使用消息。它是 JMS 的一部分吗?

是否有任何消息代理能够直接做到这一点?

如果没有,是否有解决此问题的简单解决方案?

0 投票
2 回答
575 浏览

jms - 如何检测 JMS 主题连接丢失

我们有连接到服务器进程的摆动 GUI 客户端。

客户端使用 Camel 路由中定义的“from”端点“调用”服务器上的服务jms:queue,并使用 ActiveMQ 作为底层 JMS 代理。

但是,客户端还为服务器提供了一个 Cameljms:topic端点,以将消息广播回客户端。

不幸的是,主题连接似乎以某种方式丢失了,尽管客户端仍然可以“调用”服务器上的服务,但服务器无法向客户端的主题端点发送任何消息。

Camel端点的客户端spring定义如下:

并且服务器端生产者定义如下:

有谁知道我们可以以某种方式检测客户端上此主题连接丢失的方法?

0 投票
1 回答
4413 浏览

activemq - 带有 JMS 主题的 ActiveMQ - 一些消息未被消费者出列

我们正在尝试将 ActiveMQ 5.9.0 设置为使用 JMS 主题的消息代理,但我们在使用消息时遇到了一些问题。

出于测试目的,我们有 1 个主题、1 个事件生产者和 1 个消费者的简单配置。我们一个接一个地发送 10 条消息,但是每次运行应用程序时,其中 1-3 条消息没有被消费!其他消息被消费并处理得很好。我们可以在 ActiveMQ 管理控制台中看到我们发布到主题的所有消息,但它们永远不会到达消费者,即使我们重新启动应用程序(我们可以看到“入队”和“出队”列中的数字是不同的)。

编辑:我还应该提到,当使用队列而不是主题时,不会出现这个问题。

为什么会这样?它可能与atomikos(即事务管理器)有关吗?或者也许配置中的其他东西?欢迎任何想法/建议。:)

这是 ActiveMQ/JMS 弹簧配置:

制作人:

消费者:

考试: