问题标签 [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 投票
3 回答
9346 浏览

rabbitmq - 使用 EasyNetQ 和 RabbitMQ 发布和接收消息

我是消息传递的新手,目前正在研究使用RabbitMQ作为我们系统架构的一部分来提供不同服务之间的消息传递。我有一个基本的 RabbitMQ 示例正在工作,它可以通过总线传输基本的文本消息。看起来EasyNetQ可以简化使用 RabbitMQ 的一些复杂性,尽管我在让它工作时遇到了一些麻烦。

我想发送一条由以下类表示的更高级的消息,而不仅仅是一个字符串:

我试图通过将它发布到队列来发送它,然后让订阅者从队列中提取它。我的代码如下:

出版商

接收者

双方似乎连接,发布者报告消息已发布:

订阅者记录以下内容:

看起来订阅者要么没有连接到队列(或正确的队列),要么我需要做其他事情才能真正接收到消息?

0 投票
2 回答
3974 浏览

rabbitmq - 有没有一种简单的方法可以订阅 EasyNetQ 中的默认错误队列?

在我的测试应用程序中,我可以看到处理后的异常消息被自动插入到默认的 EasyNetQ_Default_Error_Queue 中,这很棒。然后,我可以使用Hosepipe成功转储或重新排队这些消息,这也可以正常工作,但需要下拉到命令行并调用 Hosepipe 和 RabbitMQ API 以清除重试消息的队列。

所以我认为我的应用程序最简单的方法是简单地订阅错误队列,这样我就可以使用相同的基础设施重新处理它们。但在 EastNetQ 中,错误队列似乎很特殊。我们需要使用正确的类型和路由 ID 进行订阅,所以我不确定错误队列的这些值应该是什么:

bus.Subscribe<WhatShouldThisBe>("and-this", ReprocessErrorMessage);

我可以使用简单的 API 订阅错误队列,还是需要深入研究高级 API

如果我的原始消息的类型是TestMessage,那么我希望能够执行以下操作:

bus.Subscribe<ErrorMessage<TestMessage>>("???", ReprocessErrorMessage);

其中ErrorMessage是 EasyNetQ 提供的用于包装所有错误的类。这可能吗?

0 投票
2 回答
2262 浏览

.net - EasyNetQ 模型关闭

我使用 EasyNetQ 实现了一个简单的 RabbitMQ 客户端。连接后,我收到通知"Model shutdown for queue"。这是我的代码:

使用更底层的方法,一切都很好(消息长度显示在控制台中):

请提示,第一种方法有什么问题?

UPD 我用 IntelliTrace 捕获了异常:

AMQP 操作被中断:AMQP 关闭原因,由 Peer 发起,code=406,text="PRECONDITION_FAILED - 无法在 vhost '/' 中以不同类型、持久、内部或自动删除值重新声明交换 'live'",classId=40 , 方法 ID=10, 原因=

交换设置相同(见上文)。那么有什么问题呢?

0 投票
1 回答
202 浏览

f# - 你能在 foq 中设置递归模拟吗?

我会让用 Foq 模拟一个IBus

上的方法之一IBusOpenPublishChannel,它返回一个IPublishChannel。IPublishChannel 又具有Bus返回 parent 的属性IBus

我当前的代码如下,但显然它没有编译,因为 mockBus 不是由我需要的点定义的。有没有一种方法可以设置这样的递归模拟,而无需创建两个接口的模拟?

0 投票
1 回答
405 浏览

c# - RabbitMq EasyNetQ 使用 Activator.CreateInstance 创建消息

我有一个我不完全理解的问题。当我以这种方式创建消息时,它可以工作:

一条消息放在队列中,我的听众可以使用它。但是,当我像这样使用Activator.CreateInstance创建消息时,它不起作用。没有任何内容发布到队列中。

在调试过程中,我可以清楚地看到使用这两种方法创建了相同的类型。知道为什么第二种方法不起作用吗?

这就是我订阅消息的方式:

0 投票
3 回答
2209 浏览

asp.net-mvc - EasyNetQ 未呼叫用户

我有一个 ASP.NET MVC 操作,它验证连接字符串是否可以正常工作以使用 RabbitMQ 连接到服务器。我如何做到这一点是通过简单地创建一个队列,订阅它,然后立即向它发布一条消息。我希望该消息最多在几秒钟后显示在我的订阅者身上,但事实并非如此。订阅者仅在我第一次调用该操作时收到通知(在我使用其基于 Web 的管理器从 RabbitMQ 删除队列之后),但是一旦我发布任何已创建队列的后续消息,则无法调用订阅者。请看一下我的代码,如果您看到我没有看到的东西,请告诉我。提前致谢。

0 投票
2 回答
782 浏览

.net - 没有 SSL 的 RabbitMQ 身份验证是否安全?

我们正在使用 RabbitMQ,我们将通过 Internet 公开服务器。我们将有来自多台计算机的多个客户端访问服务器。我们的第一反应是启用 SSL,但从文档来看这似乎很痛苦,特别是对于 Windows 和 .NET。

我们可以手动加密我们的消息,确保重要信息无法被嗅探,但我们更关心的是认证和授权。

RabbitMQ 的默认登录架构是否安全,或者我们真的需要启用 SSL 以实现 100% 安全登录和授权?当客户端远程登录 RabbitMQ 时,有人可以嗅探虚拟主机/用户名/密码吗?

谢谢,

0 投票
1 回答
983 浏览

rabbitmq - 使用 EasyNetQ 进行基于主题的发布

我正在尝试通过 easynetQ 使用基于主题的路由。在我的设置中,我有 3 个队列(“AB”、“AC”、“BC”)并交换“ex”。所有三个队列都使用路由键“AB”、“AC”、“BC”连接到“ex”。

下面是我的代码。

在这里,当我的代码发布到 "A. " 时,消息不会发送到所有(或)任何队列。我也试过“ .*”、“#”

请建议

谢谢 Vamsee

0 投票
1 回答
657 浏览

c# - 无法通过 EasyNetQ 连接 RabbitMQ,拒绝用户访客访问

得到一个对我来说没有意义的奇怪错误。

RabbitMQ 拒绝允许在特定机器上使用 EasyNetQ 从 .Net 应用程序进行访问,但它在另一台机器上运行良好。

客户端应用程序清楚地解析了 DNS,权限是广泛开放的,并且可以在另一种情况下工作。

这是一个开箱即用的 rabbitmq 安装。

RabbitMQ 运行在 Linux 亚马逊实例上,而客户端运行在 Windows Server 2008 亚马逊实例上,它在 Windows 8 桌面上运行。

我正进入(状态:

=错误报告==== 2-Jul-2013::11:54:04 === 关闭 AMQP 连接 <0.1145.22> (107.23.30.43:62815 -> 10.125.160.196:5672): {handshake_error,opening, 0, {amqp_error,access_refused, "访问 vhost '/\r\n ' 拒绝用户 'guest'", 'connection.open'}}

有任何想法吗?

谢谢,

  • 丹尼尔
0 投票
1 回答
4759 浏览

c# - RabbitMQ, EasyNetQ Queue Name

My Queue name is "TaskQueue" but when i run code, create new queue which name is "System_String:mscorlib_TaskQueue". My Subscriber code below. What is my fault?