问题标签 [rabbitmq.client]

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 投票
0 回答
68 浏览

c# - 我们必须通过它的 ChannelNumber 或它的对象引用来锁定 IModel 吗?

我有一个场景,其中 myIModel是从方法中的池中获取的。该方法可以被多个线程同时调用。但在那种情况下,我相信IModel每次调用中的对象不会相同(因为它是由池创建的),并且只有在返回池后才能再次获得相同的对象。

但是不知何故,我得到了这个异常,涉及IModel多个线程使用一个相同的:

System.NotSupportedException:禁止请求流水线

所以我认为可能有IModel多个线程使用不同的实例,但它们都有一个相同的通道 id(通道号)。那可能吗?而且我们实际上需要使用IModel通道 id/编号(而不是引用)来锁定代码?

换句话说,每次我这样称呼:

它可能会返回不同IModel的相同ChannelNumber吗?

0 投票
0 回答
57 浏览

c# - 无法连接远程机器上的rabbitmq服务器(windows服务器)

我在 Windows Server 2019 上使用 RabbitMq 服务器 3.9.4 和 OTP 24 并想连接远程主机。

在 rabbitmq 中,我使用这些设置创建了用户:

我正在尝试从其他机器连接我的 .net rabbitmq 客户端,但连接被拒绝。

0 投票
0 回答
406 浏览

rabbitmq - RabbitMQ 客户端 AMQP 操作被中断:AMQP close-reason

我正在使用 RabbitMQ 客户端 5.2.0。

我正在从事的项目的要求如下:

  • 生产者发布大量数据

  • 可扩展的消费者和队列数量。每个启动的消费者都会声明自己的队列并订阅它们

  • 当一个消费者 N 关闭时,其他消费者必须捕捉到 QueueN 不再有消费者,因此他们必须解除绑定然后删除它。

所以基本上每个消费者每次都会执行以下操作:

每次执行最后一次操作时,我都会收到以下异常:

2021-09-14 19:29:22 [Error] Error while checking the queue: MT-SB-LP-007__LiveOddsChange_ConsistentHash_Inst_1_Process_4. Trying again on the next loop. Exception: Already closed: The AMQP operation was interrupted: AMQP close-reason, initiated by Peer, code=404, text='NOT_FOUND - no queue 'iis-sb-dev-3__LiveOddsChange_ConsistentHash_Inst_2_Process_8' in vhost '/'', classId=50, methodId=10 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)

之后通道处于故障状态,我无法获得有关队列和消费者的任何进一步信息。

我究竟做错了什么?

0 投票
1 回答
31 浏览

.net-core - .Net Core BackgroundService for RabbitMQ.Client.Core.DependencyInjection - 无法使用其他服务或 MediatR 命令

我正在创建一个应用程序,使用 RabbitMQ.Client.Core.DependencyInjection 作为 BackgroundService 中的消息消费者。接收和反序列化消息正常工作,但是当我向 MediatR 发送命令时出现错误:

我的命令处理程序的构造函数在构造函数中创建 dbContext,在 BackgroundService 之外它可以正常工作。

我了解对于 BackgroundService,需要创建范围并从 ServiceProvider 获取服务:

但是我如何使用应用程序的其余部分,我将注入的服务用作单例?

我相信如果我以同样的方式调用构造注入的 dbContext 的服务类,也会发生同样的问题,这似乎不是 MediatR 的问题。