【发布时间】:2016-03-05 07:22:08
【问题描述】:
最初我有一个 rabbitmq 节点,可以很好地处理请求/响应客户端交互。
我现在正在更改为集群并尝试运行相同的请求/响应操作。它爆炸得很壮观。
我已经设置了 2 台主机作为 rabbitmq 集群的一部分。 我遇到了很多麻烦,所以我恢复使用公共交通sample code。
这似乎也有问题。我最终在我的请求服务上遇到了一个反复出现的异常:
--- End of stack trace from previous location where exception was thrown --
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(...)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNot
ification(...)
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwai
ter.GetResult()
at MassTransit.Pipeline.Filters.RescueReceiveContextFilter`1.<MassTransit-Pip
eline-IFilter<MassTransit-ReceiveContext>-Send>d__5.MoveNext()
Returning name for 45
Rescuing exception
MassTransit.EndpointNotFoundException: The endpoint address specified an unknown
host: rabbitmq://erinome:5672/bus-ERINOME-Client.vshost-1pooyygnzw6bmox5bdjwjoy
mnw?durable=false&autodelete=true&prefetch=4
at MassTransit.RabbitMqTransport.RabbitMqSendTransportProvider.GetSendTranspo
rt(Uri address)
at MassTransit.RabbitMqTransport.RabbitMqSendEndpointProvider.<GetSendEndpoin
t>d__5.MoveNext()
我正在以最简单的配置从同一主机运行客户端和请求服务,以观察问题。
客户端的一些示例配置:
key="RabbitMQHost" value="rabbitmq://erinome"
key="ServiceAddress" value="rabbitmq://erinome/request_service"
以及请求服务的配置:
key="RabbitMQHost" value="rabbitmq://localhost"
key="ServiceQueueName" value="request_service"
我的问题可能是缺乏集群知识,并且未找到端点异常指向某些消息路由问题。任何帮助表示赞赏。
【问题讨论】:
-
所以服务使用的是本地 RabbitMQ 服务器(localhost)?在这种情况下,您似乎需要确保 erinome 主机名解析为同一本地主机。
-
如果我将所有内容更改为使用本地主机,那么一切都很好,客户端和服务器可以很好地通信,即使它们连接到集群的不同主机。
-
如果我更改为使用主机名而不是 localhost,则会出现通信问题。所有主机名都可以在 hosts 文件中解析。上下文看起来有一个包含“localhost”的响应地址,即使它应该被发送到远程主机。主机 herse 对主机 erinome DEBUG [17] (null) 的请求的响应日志 - SEND:rabbitmq://**localhost**:5672/bus-ERINOME-program-1pooyygnzw6bmco7bdjwp4rcf7?durable=false&autodelete=true
标签: c# rabbitmq cluster-computing masstransit