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

c# - 解析来自总线的命令

目前正在远离处理命令同步并将它们放置到消息总线上以便稍后处理它们但是在尝试加载命令而不是键入每个命令时返回真实类型时遇到问题

这是我到目前为止所拥有的,似乎工作正常

命令调度程序

订阅命令

处理消息

我基本上想按惯例解决我的消息,所以这就是我想要实现的目标,所以我不必键入每个命令类型,但在找回类型时遇到问题

现在 x 只是一个我不能传递给 Handlecommand 方法的对象

我将 autofac 用于我的容器,将 easynetq 用于我的总线。

0 投票
1 回答
2013 浏览

c# - 未找到 EasyNetQ 字段“RabbitMQ.Client.ConnectionFactory.AutomaticRecoveryEnabled”

当我尝试创建这样的总线时,使用 EasyNetQ v0.63.0.448、RabbitMqClient v4.0.2 和 RabbitMq 服务器 3.6.5...

我收到错误:

“找不到字段‘RabbitMQ.Client.ConnectionFactory.AutomaticRecoveryEnabled’。”

这是 easynetq 和这个版本的 Rabbit 之间的潜在不兼容,还是我需要反映的 API 发生了变化?

0 投票
1 回答
1914 浏览

c# - 如何在 EasyNetQ 中使用 Simple Injector?

尝试使用 EasyNetQ 配置 Simple Injector DI 库。实现这一目标的正确方法是什么?

项目中包含可用的 NuGet 包“EasyNetQ.DI.SimpleInjector”。添加了类似的代码InjectionExtensions.RegisterAsEasyNetQContainerFactory(container);。但是,当尝试创建像Bus = RabbitHutch.CreateBus(<ConnectionString>). 它抛出了一个错误,比如

首次调用 GetInstance、GetAllInstances 和 Verify 后无法更改容器

如果我使用 Simple Injector 注册 Bus 对象,例如

然后使用构造函数注入它然后它工作正常。但是看起来'EasyNetQ.DI.SimpleInjector'包的正确使用。

任何人都可以建议正确的方法或分享工作代码片段吗?

@dotnetjunkie @gpauls:如果您能提供专家意见,那就太好了!

0 投票
0 回答
438 浏览

c# - EasyNetQ/RabbitMQ 客户端在 IIS Web 应用程序中没有得到响应

我正在使用 EasyNetQ/RabbitMQ 将在 IIS 中运行的 Web 应用程序连接到 Windows 服务。但是,我似乎没有让请求/响应起作用。我很确定这不是代码问题,但我已经想不出下一步该去哪里了。

这是一个完美运行的测试控制台应用程序:

另一方面,这是相同的测试代码,但作为 Web 应用程序:

Web 应用程序可以很好地发送消息,排队并在后端进行处理。后端为响应提供正确的correlationID 并将其排队。但是,出于某种我不知道的原因,Web 应用程序从未得到响应。

Web 应用程序最终会超时。但是,超时的长度不是问题,因为将响应放入队列只需要大约两秒钟,并且在双方将超时更改为两分钟并没有任何区别。

有人有现成的解决方案要解决什么吗?或者任何想法在哪里看?我已经用谷歌搜索了所有关于 EasyNetQ 或 RabbitMQ 的信息,但我什至没有发现有人报告过类似的问题。

——卡里

0 投票
1 回答
1464 浏览

c# - 如何断开连接,然后使用 EasyNetQ 从 RabbitMQ 重新连接?

我处于需要断开 RabbitMQ 并使用 EasyNetQ 重新连接的情况。我通过按照文档中的描述处理 IBus 来做到这一点。

https://github.com/EasyNetQ/EasyNetQ/wiki/connecting-to-rabbitmq

“要关闭连接,只需处置总线……这将关闭连接、通道、消费者和 EasyNetQ 使用的所有其他资源。”

但是,当我调用创建新总线时,它仍显示为已断开连接并已处理。

此时,当我尝试重置我的消费者时,我收到一个带有消息“总线已被处置”的 EasyNetQException。

为什么我不能在处理总线后重新创建它?

0 投票
1 回答
192 浏览

rabbitmq - EasyNETQ 集群 - IClusterHostSelectionStrategy 在发布消息时不起作用

我添加了新的 RabbitMQ 服务器并将我的发布者连接字符串配置为

当我发布时,我正在使用bus.Publish(msg)

当我发布消息时,消息仅发送到 PC 1。我如何确保消息将随机发送给两者。

0 投票
1 回答
142 浏览

.net - FIFO队列保证消息的有序“处理”(多个消费者)?

我今天被问到这个问题,答案似乎在我的团队中产生了分歧。

场景 您有多个发布者向 RabbitMQ(通过 EasyNetQ)发送有关某些主题的事件(消息)。他们说他们保证先进先出。他们希望构建一个系统,以保证按顺序“处理”“主题”的消息。

我的解决方案 有一个缓存,每个主题保存一个“版本号”,如果序列不匹配,则保存消息处理。您可以在第一个事件处理完成后重试处理消息(延时重试)并将缓存更新到新的目标版本。这意味着消费者基本上是在等待另一个消费者完成处理。这适用于需要毫秒而不是秒的事情,因为它是一种锁定。

或者我说我们可以为这样的乱序事件实现一个暂存表http://blog.jonathanoliver.com/cqrs-out-of-sequence-messages-and-read-models/

提出问题的人说这两个答案都不正确。

他们说的解决方案是使用路由密钥和直接交换,并且让主题总是去同一个消费者。一种粘性负载平衡系统。我指出这限制了系统的按需可扩展性,因为交换/绑定需要根据任何时间点上的消费者数量进行更新。

我真的很想得到以前实施过这种模式的人的意见。这里有正确和错误的解决方案,还是基于处理延迟、可扩展性等选择正确策略的情况?

编辑:澄清。我期待找到每种方法的优缺点,以确定哪种解决方案更适合我的情况。有什么坑等吗?

0 投票
1 回答
892 浏览

.net - 多个订阅者 easymq

我有一个使用 EasyNetQ 的 .NET 应用程序来监听从另一个应用程序发布的事件。应用程序使用 SignalR 将接收到的事件发布到仪表板。

我正在使用 octopus deploy 来部署我的应用程序,问题是每次部署应用程序的新版本时,我都会停止接收发布在公共汽车上的所有消息(似乎我得到了其中一些但不是全部)。我已经阅读了有关拥有多个具有相同 ID 的订阅者的信息,我猜这就是问题所在。

我应该如何处理以避免“丢失”消息?

以及如何运行同一应用程序的不同实例(例如,几个开发人员针对同一个 rabbit mq 实例工作)以及所有客户端接收所有消息?

0 投票
1 回答
4279 浏览

rabbitmq - 如何使用 RabbitMq 处理失败的发布?

我们计划将 RabbitMq 用于我们的消息传递服务,我们会将所有消息请求发布到 RabbitMq 持久队列。

对于 .Net 客户端,我们决定使用 EasyNetQ,所以问题是我们在发布消息时应该如何处理 RabbitMq 服务器?

  • 我们是否应该捕获异常并将消息保存到数据库并使用预定作业重新发布?
  • 我们应该使用断路器吗?
  • 还是什么?我想听听你的经历。
0 投票
2 回答
2119 浏览

c# - EasyNetQ 发布和消费

我是 EasyNetQ 和 RabbitMQ 的新手。不幸的是,我在使用消息时遇到问题,我不确定是因为我做错了发布还是我的消费不正确。我可以通过发布看到,它确实发送到队列并消费它确实将它从队列中取出。但是,当返回消息时,我得到 null :S 我正在使用IAdvancedBus

发布代码片段:

消费代码片段: