问题标签 [apache-nms]

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

c# - 为什么我的流被同行关闭?

我有以下控制台程序,它在 ActiveMQ Stomp 服务器上侦听目标(队列或主题,没关系),并将它收到的消息简单地记录到控制台:

当我启动它时,它工作正常,只要我继续发送消息。但是当有 30 秒不活动时,我得到一个异常。即使没有向队列发送消息也会发生这种情况:

通过谷歌搜索和阅读 Apache.NMS 源代码,我发现它必须对“InactivityMonitor”做一些事情,显然,当我transport.useInactivityMonitor=false在连接字符串上指定参数时,我没有得到异常,一切运行良好。

但据我想我了解一切,inactivityMonitor 有一个目的:确保检测到“死”连接并正确清理。

所以肯定有其他问题!我在上面的代码中添加了一个简单的控制台跟踪器,这是不带transport.useInactivityMonitor=false参数连接时的输出:

所以我认为我的客户因为太长时间不活动而被经纪人“踢”了。但是我真的不明白为什么,从上面的日志中,我的客户实际上正在发送“keepalive”消息,这是应该的。所以它不应该是不活动的。

我没有选择如何继续处理这个问题。如果有人对此有所了解,将不胜感激!

更新
版本号:

  • 库:Apache.NMS.Stomp v1.5.3
  • 代理:Apache ActiveMQ 5.6.0
0 投票
2 回答
1957 浏览

c# - .Net NMS.ActiveMQ 我应该存储消息发送调用之间的会话和连接吗

我刚从 ActiveMQ 开始,遇到了几个问题。

我应该使用 ActiveMQ 发送消息

我现在做了什么:

只有一个此类的实例将作为构造函数参数注入。

我担心连接、会话和生产者创建的开销,因为消息会频繁发送(通常每 10 秒发送一条消息)我应该重用连接、会话或生产者实例,我应该如何应对连接失败?在这种情况下,常见的模式是什么?

0 投票
1 回答
876 浏览

c# - NACK apache nms 中的消息

我正在尝试使用 apache nms stomp 发送/接收消息。由于使用了hornetq,我无法使用跨国确认模式。我的消费场景:

  1. 接收消息
  2. 处理消息
  3. 如果进程成功则确认它(使用 message.Acknowledge())
  4. 如果进程失败(??????)

如果进程失败,我想要的只是 NACK 消息;那么我如何在 apache nms 中 NACK 消息?

0 投票
1 回答
3142 浏览

activemq - 如何使用 NMS API 删除/移除 ActiveMQ 订阅者

我需要删除/删除我的主题订阅者。我找到了这个http://activemq.apache.org/manage-durable-subscribers.html
但是,它对我们来说还不够好。我们要控制移除订阅者的时间,不管有没有消息。此外,我们的程序是用 C# 编写的。所以对我们来说最好的解决方案是 NMS API。

谢谢。


这是代码,


更新

我们的场景非常简单。

  1. 客户端构建了一个队列并订阅了一个主题的消费者。
  2. 客户端关闭了连接。
  3. 删除服务器端的消费者(如上次更新中的示例代码)

这是通过 jconsole 的 activemq 代理的快照: jconsole 快照

我们想通过以下方法删除订阅者“7B0FD84D-6A2A-4921-967F-92B215E22751”,但总是收到此错误“javax.jms.InvalidDestinationException:不存在持久订阅:7B0FD84D-6A2A-4921-967F-92B215E22751”

0 投票
1 回答
2200 浏览

activemq - ActiveMQ:多个消费者连接到一个队列,但只有一个消费者接收所有消息

我目前正在使用 NMS 开发基于应用程序的 ActiveMQ(5.6)。

我们有几个消费者(exe)试图从同一个队列(不是主题)接收massgaes。虽然所有消息都只发送给一个消费者,但我已经让消费者在收到消息后睡了几秒钟。顺便说一句,我们不希望消费者收到其他消费者收到的相同消息。

官网中提到,我们应该设置 Prefetch Limit 来决定在任何时间点可以将多少条消息流式传输给消费者。它既可以配置也可以编码。

我尝试的一种方法是使用 PrefetchPolicy 类绑定 ConnectionFactory 类,如下所示。

但无论预取值是多少,我设置的消费者行为都与以前一样。

我已经尝试了第二种方法来获得结果,即配置服务器conf文件。我像下面这样更改服务器的 activemq.xml。" producerFlowControl="true" memoryLimit="5mb" /> " producerFlowControl="true" memoryLimit="5mb"> 但是虽然我设置了 dispatchpolicy,但消息仍然发送给一个消费者。

我想知道:是否可以通过仅配置服务器 xml 文件以使所有消费者从一个队列接收消息来实现此行为?如果是这样,如何配置它以及我的配置有什么问题?如果没有,我该如何使用代码来实现目标?谢谢。

0 投票
1 回答
423 浏览

apache - 如何从沙箱中调用 Apache NMS?

我正在尝试从我的代码('IntPub')中调用 Apache ActiveMQ NMS 版本 1.6.0,出于安全原因,该代码必须在 .NET 4.0 环境的沙箱中运行。创建沙箱的程序使我的代码“部分受信任”,因此“安全透明”,这似乎意味着它无法创建 ConnectionFactory(请参阅下面的错误日志),因为 NMS 似乎是“安全关键的”。这是导致此错误的代码:

我也尝试了这个,结果相似:

由于我无法更改程序集的安全级别(沙箱阻止它),有没有办法让 NMS 作为“安全关键”运行,以便可以通过“安全透明”代码调用?我是否必须重新编译它才能这样做,或者 NMS 是否会执行一些永远不会被视为“安全关键”的操作?

我感谢任何帮助或建议...


0 投票
0 回答
163 浏览

c# - Durable Consumer ActiveMQ 测试用例,C# 实现是否无效?

我一直难以让持久的消费者在 C# 和 Windows 环境中使用 ActiveMQ(在 Java 中运行良好)。

所以我查看了测试用例,震惊地看到测试使用相同的连接和会话来运行消费者和生产者。测试通过也就不足为奇了。但是,如果您将消费者和生产者分成不同的进程,则测试将失败

测试代码在文件中找到csharp_api/DurableTest.cs

任何人都可以使用 C# API 获得持久性吗?如何?

谢谢

0 投票
1 回答
2661 浏览

c# - ActiveMQ - 没有从 DurableConsumer 收到主题消息

我正在尝试从 ActiveMQ 主题中接收消息。在 Web 控制台中,我看到许多消息在主题中排队,但运行以下代码不会返回任何内容:

任何提示将不胜感激。

0 投票
3 回答
2932 浏览

c# - 无法从 .NET 连接到 ActiveMQ:没有 IConnectionFactory 实现

我正在尝试从 .NET 客户端连接到 ActiveMQ。ActiveMQ 服务器已启动并正在运行。我可以从浏览器访问管理控制台。

当我运行以下代码时,尝试创建 NMSConnectionFactory 时出现异常。我不知道为什么会发生这种情况,也不知道如何解决。我尝试了各种端口,但这似乎确实是问题所在。有任何想法吗?

0 投票
2 回答
1920 浏览

.net - 如何以long(数据类型)的形式将消息发送到activemq有效负载?


我正在使用 .NET 3.5 向活动 mq 发送消息,并且我有一个 java 侦听器来处理来自队列的这些消息。

标题包含

侦听器期望有效负载的数据类型为 long。所以我应该在有效载荷中发送数据类型长。

这是我用来将消息发布到活动 mq 的代码。

目前根据代码,我将字符串作为有效负载发送。

如何更改此代码以将有效负载作为数据类型长发送?我试图将有效负载作为对象发送。但是当听众选择这个消息时我得到一个错误。错误:无效的流标头已损坏。

根据评论,我使用了 IStreamMessage

然后我查看了tomcat日志,这就是我所看到的,其中缺少标题。我只有有效载荷

由于这不起作用,我尝试使用 ITextMessage。

这是我在日志中可以看到的。

我正在使用 Sprint 集成,并且侦听器期望 List 作为输入参数

如何发送长数据类型的有效载荷?