问题标签 [easynetq]

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

c# - EasyNetQ Windows 服务消息传递架构无法正常工作

因此,我正在尝试(基于此 EasyNetQ 教程:快速入门 - EasyNetQ)使用涉及发布者和订阅者的简单 EasyNetQ 消息传递架构,它似乎并没有像预期的那样工作。我的发布者和订阅者都是 Visual Studio 2015 中的 Windows 服务项目,它们之间发送的消息是自定义类型 (TextMessage) 的一个实例,它是一个简单的类库,如下所示:

我的发布者看起来像这样:

所以没什么好看的。它所做的只是发布一条 TextMessage 类型的消息并将日志记录到文本文件“PublisherLogFile.txt”中:

订阅者看起来像这样:

也很简单。它所做的只是接收 TextMessage 类型的消息,并将其 Text 属性的值打印到日志文件“SubscriberLogFile.txt”中。问题是它似乎没有收到消息,因为它没有登录到上面的文本文件。看起来我的订阅者中的HandleTextMessage处理程序从未被调用过。这是“SubscriberLogFile.txt”的内容:

订阅者日志文件内容

另外,查看 RabbitMQ 管理控制台,没有创建连接或通道,只有一个队列:

RabbitMQ 管理控制台概述

RabbitMQ 管理控制台队列

和 RabbitMQ 日志:

RabbitMQ 日志

当我第一次做同样的实验时,不同之处在于发布者和订阅者是控制台应用程序而不是 Windows 服务,一切似乎都很好。这里可能是什么问题?

0 投票
1 回答
947 浏览

c# - 使用 easynetq 驱动程序连接到 rabbitmq 时出错

我突然用easynetQ驱动程序连接到RabbitMQ没有任何问题。我开始收到此错误

System.ArgumentException 发生消息:抛出异常:System.dll 中的“System.ArgumentException”附加信息:发现或指定的地址均不匹配套接字地址系列。

为什么我突然找不到rabbit mq server。这个问题的根本原因是什么。网络配置没有改变。

0 投票
1 回答
1023 浏览

c# - 使用easynetq的rabbitmq队列延迟

我使用easynetq 驱动程序为rabbitmq 编写了一个简单的发布\订阅工具。然而,这种可能性似乎很可怕。我发送带有日期时间字段的消息,并测量订阅者接收它的时间。

队列延迟 = 到达订阅者的日期时间 - 以秒为单位的原始日期时间

假设队列应该是 FIFO。我注意到随着时间的推移,队列的延迟大大增加。我无法解释结果。任何类似的经历。

消息大小约为 200Kb,订阅者中的预取计数设置为 5。发布者确认已开启。

在此处输入图像描述

0 投票
0 回答
253 浏览

rabbitmq - EasyNetQ 排他队列处理

我正在使用 EasyNetQ / Rabbitmq 我正在创建 10 个独占队列,等待消息,不幸的是,所有这些队列都在我的 prog 结束之前处理。

我在怀疑一个BasicCancel事件。

但我什至不知道我为什么收到它。

RabbitMQ 发送BasicCancel事件的原因是什么?

问候

0 投票
1 回答
370 浏览

c# - 如何从 EasyNetQ 通知 AngularJS 应用程序

所以我有以下架构: Angular SPA(单页应用程序)执行对 .NET Web API 控制器的调用,该控制器将消息发布到 Publisher EasyNetQ 窗口服务,该服务将异步请求发送到名为 Subscriber 的第二个 EasyNetQ 窗口服务,它调用后端类生成SSRS报告,最后将异步响应发送回Publisher。这是有问题的架构图:

报告生成架构

到目前为止一切顺利,订阅者收到响应,生成报告,并将消息发送回发布者。以下是 Web API 控制器将报告数据消息发送到发布者的方式:

这就是我从 Publisher 发送请求的方式:

最后,生成报告并从订阅者发送回响应的代码:

虽然这一切都有效,但我还需要一些方法来通知 Angular SPA 已生成报告,以便我可以给用户适当的反馈。这是我有点失落的地方。EasyNetQ 可以与 Angular 代码交互吗?此外,一旦我在 Publisher 中收到响应,我可能会在我的 Web API 控制器中调用一些方法,但仍然存在警告 Angular 代码的问题。有任何想法吗?

0 投票
1 回答
447 浏览

.net - EasyNetQ 希望监听器接收所有消息

我想将每条消息都保存到我的数据库中。直接在 RabbitMQ 中,我将创建一个消费者来在我的主要/唯一交换中侦听主题“*”(任何内容)。

在 EasyNetQ 中,每次创建新的 Message 类时,我似乎都必须在我的日志项目中添加一行。我想避免这种情况,所以无论我发送哪条消息,它都会在一个地方被提取并保存到数据库中,以备将来使用,而不必记住添加任何行。

我实现了自己的记录器

但收到的参数似乎只有 RoutingKey、CorrelationId、ConsumerTag、DliveryTag 和 Redelivered。但我(也)想要字符串/文本消息本身。

0 投票
0 回答
1071 浏览

c# - 具有简单请求响应架构的“请求超时异常”

我有一个非常简单的请求响应体系结构,在该体系结构上出现“请求超时”异常。首先,我从 Web API 控制器向 Windows 服务发送消息,如下所示:

ReportData1 是:

然后在 Windows 服务应用程序中,我订阅 ReportData1 类型的消息,并向第二个 Windows 服务发送同步请求:

我的第二个接收请求并返回响应的 Windows 服务如下所示:

就这样。在我运行这个之后,我得到了这个异常:

第 63 行是这样的:

我的 PublisherLogFile:

和订阅者日志文件:

所以看起来请求被接收并且响应被发回,但是没有任何反应。我只是在 RabbitMQ 管理控制台中收到一个错误。为什么我会收到此错误?

0 投票
2 回答
1014 浏览

c# - 将消息发送到队列时出错

我正在使用 EasyNetQ 在兔子队列中发送消息。

我有这样的代码

创建总线时连接已打开,但发送消息时出现此错误

AMQP 操作被中断:AMQP 关闭原因,由 Peer 发起,代码 = 406,文本 =“PRECONDITION_FAILED - 队列的不等价参数 'x-max-priority' ....:没有收到,但当前是值 '10' 'long'类型",classId=50,methodId=10,cause=

我使用 x-max-priority: 10 设置队列。我必须在连接字符串中设置其他任何内容吗?

0 投票
1 回答
143 浏览

c# - comman 的 C# 泛型类型推断

我必须使用我无法控制的特定 API:

这是来自 EasyNetQ 库的 RabbitMq 的 RPC 包装器

我想有一些方法来定义 TRequest 到 TResponse 关系,这样我就不必像这样每次调用都手动匹配它们:

我想出的解决方案是:

以及它的消费者:

是否可以摆脱 ICommand 标记界面上的 TRequest 类型?

我还担心与标记接口相关的额外成本,然后在实际的库调用中直接从中转换。

任何意见,将不胜感激。

0 投票
1 回答
620 浏览

c# - EasyNetQ 调试问题

我们让 RabbitMQ 为我们工作了一段时间,但最近我们开始出现错误

EasyNetQ.EasyNetQException:找不到消息类型的处理程序

为了看看发生了什么,我从这里下载了 EasyNetQ Git,现在当我尝试调试时,我在 EasyNetQ 共享项目的文件 AdvancedBusEventHandlers.cs 中出现以下错误。检查 RabbitMQ 页面,最稳定的版本是 3.6.4,所以不知道这里发生了什么。

文件 AdvancedBusEventHandlers.cs 中的错误

有没有人遇到过这个错误?或者任何人都可以推荐这个修复?

谢谢