问题标签 [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 回答
1123 浏览

c# - 未在代理网络中转发的连接的 ActiveMQ 咨询主题?

我正在开发一个我们想要监控客户端登录/注销的应用程序。由于 ActiveMQ 包含提醒您新连接和删除连接的咨询主题,因此我们的想法是使用此咨询消息 (ActiveMQ.Advisory.Connection)。这在开发过程中运行良好,但是现在,当我们在代理网络中进行生产时,我们注意到来自网络中远程代理的消息没有到达我们的消费者。

我们的设置是:

制片人 | 站点 1 中的代理 A 和 B(主从)-> 它们有一个双工网络连接器连接到我们的公共代理(C 和 D)

站点 2 中的代理 C 和 D(再次成为主从)

并附加到 C 和 D,我们有我们想知道其登录/注销信息的“消费者”。

当我们在代理 A 的管理控制台中查看咨询主题时,我们会看到订阅者,如果我们让消费者连接,我们会收到登录消息。在 Broker C 上,我没有看到任何关于咨询主题的订阅者,并且当消费者登录/关闭时,我们看不到咨询消息。

这是默认行为还是我缺少配置?

0 投票
1 回答
989 浏览

c# - WCF如何将ServiceContract/OperationContract变成可以序列化的Message?

我开始尝试使用 ActiveMQ(结合 ActiveMQ.NMS 绑定)来支持我们正在研究的一些跨平台 RPC 消息传递。

作为其中的一部分,我希望能够以 WCF 提供的方式定义我们的 RPC 合同 - 例如。

而且我正在考虑为 ApackeMQ.NMS.WCF 项目做出贡献以使其能够正常工作,并且我在编写自定义绑定方面有一些经验,所以我不再这样做了。

但是,我首先遇到了 WCF 如何运作的概念问题。显然,在某种程度上,通过客户端通道上的代理对“GetByEmail”的调用必须转换为消息和响应对象,以便它们可以被序列化。我希望能够知道这是如何工作的,以便更好地全面了解 WCF。

我无法找到任何文档来确切说明这是如何完成的,以及确实涉及到相当庞大的 WCF 基础结构中的哪些类。

有没有人有任何指示?对课程的顶级解释和/或指导会很棒。

谢谢。

0 投票
1 回答
351 浏览

.net - 使用 Apache.NMS 库时,有没有办法在 ActiveMQ 中设置最大消息重新传递次数?

我正在使用 Apache.NMS 1.4。我需要能够以编程方式设置在将消息放入 DLQ(死信队列)之前可以传递的最大次数。有没有办法做到这一点?

0 投票
2 回答
1038 浏览

c# - 如何在我的 C# 应用程序中限制来自 ActiveMQ 的消息量?

我在 .Net 程序中使用 ActiveMQ,并且充斥着消息事件。

简而言之,当我收到一个队列事件“onMessage(IMessage receivedMsg)”时,我将消息放入一个内部队列中,X 线程在其中执行它们的操作。

起初我在创建会话时有:'AcknowledgementMode.AutoAcknowledge',所以我猜测队列中的所有消息都被吸入并放入内存队列(这是有风险的,因为崩溃,一切都丢失了)。

所以我在创建会话时使用了:'AcknowledgementMode.ClientAcknowledge',当工作人员准备好消息时,它调用消息上的'commit()'方法。但是,仍然所有消息都从队列中被吸走。

我如何配置它只处理 X 数量的消息或在内部队列中,而不是立即“下载”所有内容?

0 投票
2 回答
1757 浏览

c# - 具有服务器应用程序的多个客户端超过 15 个客户端处理问题

我有一个用 C# .NET 编写并在 Windows XP SP3 上运行的服务器应用程序。

我正在使用异步套接字编程来处理大约 500 个客户端。

但是我遇到了一个问题来招待超过 15 个客户端连接。

当 15 个客户端后又有 1 个客户端连接时,我的应用程序被关闭;我不明白问题是我的操作系统还是 Windows XP 中的 tcp 连接限制问题。

请帮助解决这个问题,请提出任何解决方案。

更新:

这是我的一段代码。

这里的最大客户端值是 200 和工作套接字,所以它应该处理 200 个客户端,但我认为它在从超过 15 个客户端接收数据时产生了问题,因为每个连接的客户端都是连续连接的并将数据发送到服务器。

0 投票
2 回答
5057 浏览

c# - ActiveMQ - 将消息发送到使用字符串指定的临时队列(C# 中的 NMS)

我的系统中有一个同步消息事务,该过程大致遵循以下流程:

  1. “A 点”在消息代理上创建一个临时队列(“目的地 2”);
  2. 消息从 A 点发送到目标 1(消息代理上的普通队列),ReplyTo 地址设置为目标 2;
  3. A点阻塞等待目的地2的响应;
  4. B点收到来自目的地1的消息;
  5. B 点创建一个工作对象 - 其属性是目标 2 的名称(使用 .ToString() 派生)。该工作对象被序列化并存储在数据库中;

...

  1. 当满足某些参数时从 DB 检索对象,发生更改,并将响应发送到目标 2 - 使用 SessionUtil 从作为工作对象的字符串属性存储的回复地址中派生新的 Idestination 对象;
  2. “A 点”收到来自目的地 2 的消息并继续前进。

这个过程可能需要从一瞬间到几秒钟的时间来完成。

我需要使用返回目的地的名称(目的地 2),而不是完整的 Idestination 对象,因为我必须序列化对象并存储在数据库中。

如果我使用永久队列或主题作为目标 2,则该过程可以正常工作。但是,尝试使用临时队列的字符串名称创建它时总是失败。

没有错误,消息只是未能到达

任何想法为什么?

显示发送返回消息的示例代码:

(“实例”是工作对象——它包含回复地址和其他信息)

0 投票
1 回答
3222 浏览

c# - Java 和 C# 之间的 DateTime 转换会引入错误吗?

背景

我正在使用 Apache 的 NMS 库与 ActiveMq 交谈。每条发送的消息都由生产者标记时间戳,我通过从 中减去时间戳来查看消息延迟DateTime.UtcNow,我希望看到 0-100 毫秒的延迟,但我看到报告的延迟在 -1000 到 1000 毫秒之间。显然负延迟是没有意义的,所以我最初怀疑系统时钟不同步,但我现在已经独立确认它们是正确的并且在 20 毫秒内。

更多背景

使用系统时钟测量广播消息延迟,好主意吗?

问题

我现在认为这些差异可能是由于 .Net 和 Java 之间处理日期的方式造成的。

  • 从 Java 到 .Net 的转换是有损的吗?
  • 这些转换能否解释我观察到的较大的负时间跨度?
  • 还有什么可以解释时差的吗?

MessageProducer.cs -- 生产者设置 NMSTimestamp

ActiveMqMessage.cs -- NMSTimestamp 转换为 Java 时间并存储在 Message

Message.cs -- Timestamp 保存有线格式的日期,消息编组器直接设置此值

DateUtils.cs -- 用于执行转换

我的代码计算延迟如下

0 投票
2 回答
2487 浏览

activemq - 如何使用 Apache.NMS API 以编程方式清除 ActiveMQ 队列?

我需要能够使用 Apache.NMS (C#) 以编程方式清除队列。我一直在查看 NMS API,但没有看到这样的功能。它存在吗?

0 投票
2 回答
1432 浏览

c# - 使用 ActiveMQ 5.3 和 NMS 延迟交付

我正在尝试使用 NMS 的新延迟交付功能。

schedulerSupport 属性已在配置文件中设置,我正在使用以下代码尝试延迟消息的传递,直到达到用户选择的日期/时间。

代码(目前似乎不起作用)如下:

你能指出这个例子中可能不正确的地方吗?

非常感谢!

0 投票
1 回答
1440 浏览

apache - 使用 Apache NMS 传输大文件

可以说,在通过 Apache NMS(使用 ActiveMQ)传输大文件时,目前认为什么是最先进的?将整个内容放入 StreamMessage 中?但是,我发现这里的命名有点误导,因为文件实际上并没有通过 JMS 流式传输,整个内容将驻留在内存(或磁盘?)中,并且会一次全部发送。在这里,我遇到了大于 100 MB 的文件的一些问题:Apache.NMS.NMSException : Unable to write data to the transport connection: An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full.

NMS 不支持 BlobMessage ......我真的看不到任何选择,只能将文件分成块,在另一边重新组装它们,等等。

谢谢你,克里斯蒂安。