我的RabbitMQ服务器也可以从本地网络和互联网上获得,如果我从本地网络收到了rabbitmqUri的请求,那么
rabbitmq://172.16.0.1 ...
但如果我想从互联网访问这个服务器,我的rabbitmq uri看起来像
rabbitmq://245.123.155.81 ...
因此,当我从互联网上获取请求并且我的concumer尝试响应(context.RespondAsync)到inernal的外部ip时,问题就出现了。
问题是: 是否可以将context.ResponseAddress更改为本地ip地址(此属性是私有的,只读)?
答案 0 :(得分:1)
MessageRequestClient
有一个构造函数,它采用明确的响应地址:
public MessageRequestClient(ISendEndpointProvider sendEndpointProvider,
IRequestPipeConnector connector,
Uri responseAddress,
Uri serviceAddress,
TimeSpan timeout,
TimeSpan? timeToLive = default(TimeSpan?),
Action<SendContext<TRequest>> callback = null)
根据您现在的情况,您需要将初始化更改为:
var client =
new MessageRequestClient<MyRequest, MyResponse>(bus, bus,
new Uri("rabbitmq://245.123.155.81/some_virtual_host"),
serviceAddress, requestTimeout);