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

asp.net-web-api - 使用 asp.net web api 作为订阅者的 EasyNetQ

我必须实现一个 asp.net web api,它充当 rabbitMQ 的订阅者。Windows 服务将向 Web api 服务发布消息。在生产环境中将运行不止一个 web api 实例。我不确定如何在 web api 上打开订阅者通道并保持打开状态,直到 IIS 重新启动。将有一个发布者和几个消费者。

任何人都可以用一些示例代码来指导吗?

任何帮助将不胜感激

0 投票
1 回答
986 浏览

c# - 依赖于 RabbitMQ 的 Topshelf 服务在重新启动时未启动

我有一个使用 EasyNetQ 和 RabbitMQ 的 Windows 服务。服务从服务控制管理器正常启动。但是,我偶尔会在重新启动时看到,服务不会以服务事件日志中的错误启动:

我试过自动延迟服务,但没有帮助。

此外,我正在考虑设置恢复机制,以便如果它没有启动,它会在第一次/第二次和后续故障时重新启动。不确定这是否可行。

所以我的问题是如何确定导致我的服务有时无法启动的依赖关系?

0 投票
3 回答
15708 浏览

c# - 在两个不同应用程序之间通过 EasyNetQ 通过 RabbitMQ 发送对象的 HelloWorld 示例

嗨,我正在尝试通过 EasyNetQ 通过 RabbitMQ 发送一个简单的对象。我在订阅端反序列化该对象时遇到问题。任何人都可以向我展示这是如何工作的样本。请记住,要发送的对象是在它自己的项目中定义的,而不是在发布者和订阅者之间共享。这是我的示例,也许您可​​以告诉我它有什么问题?

方案一:

方案 B:

这是我收到的错误:

我需要做什么才能正确反序列化MessageA

0 投票
2 回答
1680 浏览

rabbitmq - 使用 EasyNetQ 将确认入队

我想接收一条消息实际上已被放入队列的异步确认。我进行了相当多的搜索,并尝试了使用 EasyNetQPublishAsync进行确认的各种方法,但似乎找不到Bus能给我这样的确认的连接配置和代码组合。

也许PublishAsync不是这样做的方法,我忽略了 EasyNetQ API 中的其他内容?其他人有使用 EasyNetQ 实现此场景的经验吗?

0 投票
1 回答
1124 浏览

c# - 将 Ninject 与 EasyNetQ/RabbitMQ 消息处理程序一起使用

我正在尝试将 EasyNetQ 与 Ninject 一起使用来记录消息。

我已经设法将 Ninject 设置为 EasyNetQ DI(我认为),但是当消息到达没有无参数构造函数的处理程序时(例如,我需要在其中绑定存储库),它无法解析。或者至少我认为这是问题所在,因为我在控制台上遇到了一个非常普遍的错误。

我告诉 EasyNetQ 像这样使用 Ninject:

我想这就是我设置它所需要的。Ninject 适配器是来自 EasyNetQ 的适配器。

我的处理程序如下所示:

如果我添加了一个无参数的构造函数,而是将 Ninject 设置为可通过 ServiceLocator (Ugh) 使用,那么它就可以工作。处理程序调用正常,我可以通过 ServiceLocator 找到我的存储库,所以我知道至少 Ninject 知道存储库。

尝试处理消息时弹出的错误是。

0 投票
0 回答
159 浏览

c# - 消息被消费后删除?

消息被消费后是否可以删除?下面的示例创建并使用消息但不删除消息。观察 RabbitMQ Web 界面,消息在 Ready 和 Unacked 之间切换。

制作人(我的服务)

消费者(我的应用程序)

0 投票
2 回答
1055 浏览

c# - EasyNetQ 中的多态请求-响应

我想知道我是否可以在 EasyNetQ 中以类似于多态发布订阅的方式进行多态请求响应

这是一个使用 Mike Hadlow 的示例和Cats 和Dogs 的示例(查看上面的链接),但使用Animal的是类而不是接口。我正在尝试做类似的事情:

如果在接收端我有以下内容,

请求永远不会被响应者捕获,因为它是作为Animal而不是Dog.

这里的要点是请求并不真正关心它发送的内容(除了它发送的事实Animal)并且输入来自系统的不同部分,因此我无法提前知道确切的类型。将有不同的侦听器来响应不同的子类(一个侦听器为Dog,另一个为Cat),所以我不能只听Animal请求。TResponse不管TRequest.

有没有办法做一些相当于多态发布-订阅的事情?例如,类似:

提前非常感谢!

编辑:更多信息:

目前在我的代码库中,我使用 (extension) 方法,以便根据我仅在运行时知道bus.Publish(msg.GetType(), msg);的实例类型将消息正确路由到正确的侦听器。msg这允许我通过提供相同的函数调用(无代码流分支)作为发布不同类型消息的方式来避免代码bus.Publish<Dog>(msg)重复bus.Publish<Cat>(msg);。我也想使用非泛型bus.Request()方法,并像 一样使用它,以避免像 in一样bus.Request(msg.GetType(), string.GetType(), msg)多次调用此方法。希望我可以避免这样做:在运行时调用泛型方法bus.Request<Dog, string>(msg)bus.Request<Cat, string>(msg);

0 投票
1 回答
1919 浏览

signalr - 找不到字段:'RabbitMQ.Client.ConnectionFactory.VirtualHost'

我正在尝试使用来自 c# 中的队列使用者的SignalR.RabbitMQ ( https://github.com/mdevilliers/SignalR.RabbitMq ) 使用 RabbitMQ 消息传递,代码如下:

但不幸的是,失败了:

出现错误:

相同的连接在控制台应用程序上工作正常。如果我删除 VirtualHost 仍然会给出同样的错误。

不知道出了什么问题。在这里发现了同样的错误:https ://github.com/MassTransit/MassTransit/issues/204但对我没有帮助。我使用 EasyNetQ 的最新版本(0.40.3.353)和 RabbitMQ 客户端的最新版本(3.4.3)

0 投票
2 回答
115 浏览

rabbitmq - 路由死信消息

EasyNetQ 中有没有办法在创建队列时设置路由键[x-dead-letter-routing-key] 参数?(据我所知,您只能设置 DeadLetterExchange。)

0 投票
2 回答
307 浏览

c# - MOM 中的消息元数据

我开始探索 NServiceBus、RabbitMQ、MassTransit 和 EasyNetQ。

我特别想了解的一个细节是如何确保始终随每条发布的消息发送一组自定义元数据?

例如,无论消息生产者发布什么,我都可能希望确保以下信息始终作为消息的一部分发送:

  • 时间戳
  • 工作流程名称
  • 优先

元数据是什么并不重要,重要的是具有转发此类任意信息的选项或能力。

我喜欢这样的想法,即生产者发送的消息的名称空间和类名会自动转换为消息的“路由键”。然而,为了将额外的元数据附加到消息中,可能需要有某种“预发布”挂钩点,允许将任意消息转换为包装对象的有效负载,如这样的:

在这种情况下,我不希望“路由键”包含BaseMessage. 在序列化之前,有效负载类型是“路由密钥”应该基于的。

当然,所有这些也都假设消费者有一些方便的方法来反序列化 BaseMessage 和有效负载。

那么我列出的哪些工具支持这种需求呢?请在适用的情况下显示示例语法。