问题标签 [durable-subscription]

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

activemq - 如何处理重复的持久 Stomp 订阅者?

我有多个 Ruby 进程启动并尝试使用 Stomp 通过持久订阅者连接到主题。

第一个进程成功,并读取消息(耶)。

后续进程失败,并反复尝试重新连接。

我的进程如何发现持久订阅者已经连接,并退出尝试连接?

可能的虚构代码片段:

环境:

  • 红宝石 1.9.3
  • stompgem 1.3.2

代码:

0 投票
1 回答
3393 浏览

java - JMS 对一个主题的多次持久订阅

我现在开始 JMS 一个星期了。我使用 Netbeans、maven 和 glassfish 创建了 JMS。

我有一个生产者一个持久消费者,我想在同一主题中添加另一个持久消费者(而不是队列)。有可能这样做吗?因为我希望所有消费者都消费生产者发送的所有消息,无论消费者是否离线。

有什么建议吗?谢谢

}

0 投票
1 回答
1924 浏览

error-handling - 关于 Spring 消息驱动通道适配器的查询

我正在使用 Spring 的消息驱动通道适配器。我的组件正在使用来自 Tibco 主题的消息并发布到 RabbitMQ 主题

所以消息流如下:Tibco->(订阅者)组件(发布到)-> RabbitMQ

服务激活器如下所示:正如我们所见,有一个输入通道和一个输出通道。bean storeAndForwardActivator 将具有业务逻辑(在方法 createIssueOfInterestOratorRecord 内)

我还有一个 message=driven-channel-adapter。此适配器将在调用服务适配器之前调用。

即特别是容器(如下所示)将保存要使用的主题名称 - 这是 DefaultMessageListenerContainer

这个设置工作得很好。但是在某些情况下,我的消费者/组件会收到“流氓”消息。即一个空的有效负载或 HashMap 的消息类型(而不是纯 TextMessage) - 当我们得到这个时 - 我观察到的是 - 在 DefaultMessageListener 级别捕获了一个异常(即我没有像我的业务 bean 一样,即 storeAndForwardActivator ),因此我的组件没有发回 ACK - 因为这是一个持久的主题 - 在主题上有一个消息的构建 - 这是不可取的。无论天气如何,我有没有办法立即确认消息,在 DefaultMessageListener 级别捕获异常?

还是应该在 DefaultMessageListener 中引入错误处理程序?处理这个问题的最佳方法是什么,有什么建议吗?

问候 D

更新:

我尝试将 errorHandler 添加到 org.springframework.jms.listener.DefaultMessageListenerContainer ,如下所示

myErrorHandler 是一个 bean,如下面的 shpwn

MyErroHandler 实现 ErrorHandler

}

我注意到异常被捕获(当订阅者使用流氓消息时)。我一直在循环中看到此日志

即由于事务未提交 - 来自持久主题的相同消息被一次又一次地消耗。我的目标是在使用消息后将 ACK 发送回代理(无论天气如何,都会捕获到异常)。

明天我将尝试错误通道。

问候 D

0 投票
1 回答
1827 浏览

java - 在 ActiveMQ 中使用具有虚拟主题的持久订阅者,订阅恢复策略是否起任何作用?

我对如何正确使用 ActiveMQ 有点困惑。

我想要做什么

我有系统 A,它为虚拟主题生成消息。然后是系统 B 和 C,它们都使用来自同一个虚拟主题的消息。系统 B 或 C 可能会脱机。所以当他们重新上线时,我需要他们接收离线期间产生的所有消息。

到目前为止我尝试过的

我已阅读有关持久订阅者的信息(http://activemq.apache.org/how-do-durable-queues-and-topics-work.html虚拟主题/队列和持久性)。这似乎符合我的问题描述,并且在做了一些实施之后,一切似乎都按照我最初想要的方式工作。

是什么造成了混乱

然后我阅读了订阅恢复政策 ( http://activemq.apache.org/subscription-recovery-policy.html )。这是我应该配置的东西还是我完全误解了一些东西?例如,如果我想存储指定数量的消息,我应该配置 aFixedCountSubscriptionRecoveryPolicy还是应该查看 some pendingMessageLimitStrategy

0 投票
1 回答
4368 浏览

java - 持久订阅 ActiveMQ

我正在尝试为我的消息设置持久订阅者,以便即使在服务器重新启动后它们也会在主题中持续存在。

但在配置过程中,我收到与 xml 相关的错误:

这是我的配置xml:

但是在message-driven-channel-adapter以下属性中给出了错误: 在此处输入图像描述

它说:

在此行找到多个注释:

  • cvc-complex-type.3.2.2:属性“subscription-durable”不允许出现在元素“int-jms:message-driven-channel-adapter”中。
  • cvc-complex-type.3.2.2:属性“durable-subscription-name”不允许出现在元素“int-jms:message-driven-channel-adapter”中。

但在更多示例中,我可以看到以下属性工作正常。

  • subscription-durable="true"

  • durable-subscription-name="myDurableSubscription"

那么我的配置可能有什么问题。

编辑:POM.xml 中的 Spring 集成依赖项

编辑:

请看附图: 在此处输入图像描述

另请参阅我的日志,这表明目标方法已被调用,这应该在客户端使用消息时发生。 在此处输入图像描述 请帮忙。

0 投票
1 回答
222 浏览

jmeter - JMeter 中的 CSV 数据集配置无法读取持久订阅 ID

我需要通过读取要从包含从 1 到 10 的整数值的 csv 文件设置的持久订阅 ID,将 10 个不同的持久订阅者添加到消息代理中。但是,JMeter 未能读取该值,而是尝试设置订阅 ID 为 ${id}。下面是我在 JMeter 中所做的配置。

在此处输入图像描述

在此处输入图像描述

请注意,当我通过用户定义的变量尝试相同的操作时,它将获取变量的值并成功创建持久订阅。

JMeter 日志如下。

0 投票
2 回答
3449 浏览

java - 使用 ActiveMQ 取消订阅持久订阅者

我正在尝试从 TOPICS 中取消订阅持久订阅者。

我的应用程序是一种社交网络:每个用户都是其他用户的主题。因此,每次用户在做某事时,都会通知他的朋友。当然,订阅者可能会取消订阅某个主题,不想再收到有关用户的通知。

每次我试图取消订阅某个主题的订阅者时,都会收到一条错误消息,告诉我:“ javax.jms.JMSException: Durable consumer is in use

这是我的 2 节课,SENDER 一节和 RECEIVER 一节。有人可以告诉我我做错了什么吗?

发件人类别:

接收器类:

0 投票
0 回答
103 浏览

javascript - 使用 ActiveMQ 的 js api,如何指定持久主题订阅?

我正在使用 ActiveMQ 的 amq.js 订阅客户端 js 中的主题。我通过这样的电话这样做:

...但我想指定此主题订阅是持久的。

我怎么做?我假设我会?propertyName=propertyValue在主题名称的末尾添加一个查询字符串,但我找不到有关适当属性名称和值的文档。

(仅供参考,我使用的是 ActiveMQ 5.8.0)

0 投票
1 回答
1004 浏览

activemq - Spring - ActiveMQ - 持久订阅 - 关闭连接并重新订阅以获取离线消息

我想在 Spring-JMS 中使用 activeMQ 实现一个解决方案,我想在其中创建对主题的持久订阅。目的是,如果订阅者关闭订阅一段时间并再次使用相同的客户端 ID 和订阅名称重新创建持久订阅,订阅者应该收到在订阅关闭期间传递的所有消息。

我想为持久订阅实现 ORACLE URL 中提到的以下逻辑:https ://docs.oracle.com/cd/E19798-01/821-1841/bncgd/index.html

在此处输入图像描述

但我无法使用 spring-jms 执行此操作。根据 URL,我需要获取 messageConsumer 实例并在该方法上调用 close() 以暂时停止从主题接收消息。但我不确定如何获得它。

以下是我的配置。请让我知道如何修改配置以执行此操作。

0 投票
2 回答
2888 浏览

jboss - ActiveMQ - 客户端已连接相同的 clientId 错误

我们有一个连接到 ActivMQ apache-activemq-5.14.3 的 JBoss EAP 7.0.0.GA 设置。我们正在尝试使用以下配置设置持久订阅者:

但是,我们在 JBoss 服务器控制台中遇到以下异常

同时如果我们在 activmq 看到如下日志:

ActiveMQManagedConnectionFactory 设置如下(尝试将 max-pool-size 设置为 1,但没有效果):

请向 AMQ 专家寻求帮助。