如何在使用方法

时间:2017-06-30 11:34:59

标签: c# .net masstransit

我的RabbitMQ服务器也可以从本地网络和互联网上获得,如果我从本地网络收到了rabbitmqUri的请求,那么

  

rabbitmq://172.16.0.1 ...

但如果我想从互联网访问这个服务器,我的rabbitmq uri看起来像

  

rabbitmq://245.123.155.81 ...

因此,当我从互联网上获取请求并且我的concumer尝试响应(context.RespondAsync)到inernal的外部ip时,问题就出现了。

问题是: 是否可以将context.ResponseAddress更改为本地ip地址(此属性是私有的,只读)?

1 个答案:

答案 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);