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

rabbitmq - EasyNetQ - 带有主题的延迟消息

有没有办法使用 EasyNetQ 发布带有主题的延迟消息?我能够使用该FuturePublish方法发送直接延迟消息,但它不允许我指定主题。

链接:

使用 Future Publish 安排事件

RabbitMQ 获得对延迟消息传递的支持

谢谢

0 投票
2 回答
4316 浏览

c# - 异常时重新排队消息

我正在寻找一种可靠的方法来重新排队无法正确处理的消息 - 目前。

我一直在查看http://dotnetcodr.com/2014/06/16/rabbitmq-in-net-c-basic-error-handling-in-receiver/似乎支持在 RabbitMQ 中重新排队消息API。

但是我使用的是 EasyNetQ。所以想知道我会如何在这里做类似的事情。

这甚至是一个好方法吗?如果超过 RabbitMQ 服务器的等待超时,则消息不会ACK导致问题。do workACK

0 投票
1 回答
889 浏览

easynetq - EasyNetQ - 基于原始队列的自定义错误队列名称

我想根据产生错误的队列名称在 EasyNetQ 中给出错误队列名称。例如,来自的所有错误消息QueueA将转到QueueA.ErrorQueueB消息将被重定向到QueueB.Error,依此类推。

但是,ErrorQueueNamingConvention 没有像 ErrorExchangeNamingConvention 那样接收 MessageReceivedInfo 参数,因此我不知道原始队列的名称是什么。有没有办法得到它或任何解决方法?

谢谢

0 投票
1 回答
647 浏览

rabbitmq - RabbitMq 聚类

我是 RabbitMq 的新手。我无法理解这里的概念。请找到场景。

我有两台机器(RMQ1,RMQ2),我在两台正在运行的机器上都安装了rabbitmq。我再次集群 RMQ2 以加入 RMQ1

如果您在此处查看机器的状态,则如下所示

在 RMQ1 中

在 RMQ2 中

为了发布和订阅消息,我连接到 RMQ1。现在我看到每当我向 RMQ1 发送或发送消息时,我都会看到消息在 RMQ1 和 RMQ2 中镜像。我清楚地理解,由于两个节点都在同一个集群中,它们正在跨节点镜像。

假设我关闭了 RMQ2,我仍然看到消息被发布到 RMQ1。

但是当我关闭 RMQ1 时,我无法再发布消息了。由此我了解到 RMQ1 是主机,RMQ2 是从机。

现在我有以下问题,无需更改代码:

  1. 如何让 RMQ2 承担接受消息的工作。
  2. 高可用队列是什么意思。
  3. 实施这种情况的策略应该如何。

请帮忙

0 投票
0 回答
332 浏览

rabbitmq - EasyNetQ 使用二进制消息

我使用以下代码将原始消息发布到队列:

消息已传递到队列,我在 RabbitMQ 控制台的队列中看到一条消息。但是,当我尝试使用以下代码使用它时,我没有得到任何回报:

我可以看到消息是从 Rabbit 的控制台传递的,但没有打印出来,消息仍在队列中。我错过了什么?

0 投票
1 回答
1141 浏览

c# - EasyNetQ - 通过非通用消息使用来自 IAdvanceBus 的消息

是的,我们可以通过这个订阅 ID 使用自动订阅功能和普通订阅方法,但是这个解决方案在 RMQ 队列和交换中有点难看。很难跟踪和分析这些信息。

我使用高级巴士并创建了自己的交换和队列。我成功发布了,但消耗部分有点失望。目前,它使用这种方式:

这很好,但如果你有一百个听众,问题就来了?

我检查了注册类型IHandlerRegistration它只使用通用的,我们可以有非通用的方式吗?

喜欢 :

通过这种方式,我们可以扫描使用此消息的程序集。

另一方面,我通过构建总线进行注册:

但它不尊重我的注册,因为当我看到高级总线消耗的代码时:消耗它从工厂创建的代码而不是从容器中读取的代码。我相信这是一个根本原因。

0 投票
3 回答
9580 浏览

c# - RabbitMQ 中的消息持久化

我正在编写一个小应用程序,我在其中使用 RabbitMQ 发送/接收消息。一切正常,但我正在努力解决消息持久性问题。

即使在服务器重新启动时,我也希望消息保留在队列中。我理解交换和队列级别的持久性概念,并将它们设置为 true(而不是默认为 true)。所以当我重新启动我的 RabbitMQ 服务器时,交换和队列保持不变,但队列中的消息被删除。

我正在使用 EasyNetQ.IBus 接口发送消息。

谢谢

0 投票
1 回答
1077 浏览

c# - 来自工厂方法的 Autofac 单例

我几乎正在寻找一个使用 Castle Windsor实现的Autofac 端口。IBus是 EasyNetQ 库提供的接口,我想注册一个工厂,将 IBus 实例实例化为单例。BusBuilder.CreateMessageBus是工厂方法。温莎城堡的例子:

0 投票
3 回答
3415 浏览

rabbitmq - EasyNetQ 支持 nack 吗?

我真正想做的是在当前消费者拒绝消息的情况下将消息留在队列中。在 RabbitMQ 中,我可以发送一个 NACK 来完成此操作。EasyNetQ 是否支持 NACK?有没有另一种方法来实现我正在寻找的行为?

更新:回复不多,所以我想知道人们通常如何处理 EasyNetQ 中缺少 NACK。没有相当于basic.reject将消费者限制为“我总是可以处理每条消息”的场景。我想消费者可以抛出一个特定的“被拒绝”异常来导致 EasyNetQ 将消息出列到错误队列中,并且我可以将带有这些错误的消息重新排队。还有其他人有其他解决方法吗?

0 投票
1 回答
1111 浏览

easynetq - EasyNetQ - 如何在 EasyNetQ_Default_Error_Queue 消息中包含原始队列名称?

当使用发布者/订阅者模式并且在订阅者处理期间抛出异常时,EasyNetQ 默认情况下会在 EasyNetQ_Default_Error_Queue 中放置一条消息。

问题是我在错误消息中只有原始交换名称。我真正需要的是原始队列名称,因此我可以将消息重新发布到队列,而不是交换。

如何在错误消息中包含队列名称?

EasyNetQ_Default_Error_Queue 中的示例错误消息: