MassTransit 发送到现有交易所
MassTransit Send to Existing Exchange
所以我将 MassTransit 添加到之前仅使用 RMQ 客户端的现有项目中。
我正在尝试创建绑定到现有交换器的仅发送总线。但是,当我尝试发送消息时,我收到有关交换类型为 "fanout" 的错误,但现有类型为 "topic",我不确定如何指定它应该为 [=26] =] 或者它根本不应该尝试创建交换而只是使用那里的东西。
拓扑:'import'(交换)-> 'import'(队列)
设置:
Bus.Factory.CreateUsingRabbitMq(
cfg =>
{
cfg.UseNLog();
var host = cfg.Host(serverName, vhost,
options =>
{
options.Username(userName);
options.Password(password);
});
});
执行:
var ep = bus.GetSendEndpoint(new Uri($"rabbitmq://{userName}:{password}@{serverName}/{vhost}/{queue}")).Result;
ep.Send<ImportMessage>(CastMessage<ImportMessage>(message),
cfg =>
{
cfg.SetRoutingKey("import");
}).Wait();
命令:
public class ImportMessage
{
public ImportMessage()
{
Parameters = new List<KeyValuePair<string, string>>();
}
public List<KeyValuePair<string, string>> Parameters { get; set; }
public string Endpoint { get; set; }
public Guid Id { get; set; }
public string Type { get; set; }
public DateTime Expiration { get; set; }
}
您可以使用以下方法为消息协定配置发布拓扑:
Bus.Factory.CreateUsingXxx(cfg =>
{
cfg.Publish<YourMessageType>(x => x.ExchangeType = ExchangeType.Topic);
});
然后,当您发布消息时,它将使用该交换类型。您还可以使用消息拓扑更改实体的名称:
cfg.Message<YourMessageType>(x => x.SetEntityName("your-exchange"));
这将为类型指定交换名称。
有一个sample表示支持直接交换,主题交换在客户端类似。
所以我将 MassTransit 添加到之前仅使用 RMQ 客户端的现有项目中。
我正在尝试创建绑定到现有交换器的仅发送总线。但是,当我尝试发送消息时,我收到有关交换类型为 "fanout" 的错误,但现有类型为 "topic",我不确定如何指定它应该为 [=26] =] 或者它根本不应该尝试创建交换而只是使用那里的东西。
拓扑:'import'(交换)-> 'import'(队列)
设置:
Bus.Factory.CreateUsingRabbitMq(
cfg =>
{
cfg.UseNLog();
var host = cfg.Host(serverName, vhost,
options =>
{
options.Username(userName);
options.Password(password);
});
});
执行:
var ep = bus.GetSendEndpoint(new Uri($"rabbitmq://{userName}:{password}@{serverName}/{vhost}/{queue}")).Result;
ep.Send<ImportMessage>(CastMessage<ImportMessage>(message),
cfg =>
{
cfg.SetRoutingKey("import");
}).Wait();
命令:
public class ImportMessage
{
public ImportMessage()
{
Parameters = new List<KeyValuePair<string, string>>();
}
public List<KeyValuePair<string, string>> Parameters { get; set; }
public string Endpoint { get; set; }
public Guid Id { get; set; }
public string Type { get; set; }
public DateTime Expiration { get; set; }
}
您可以使用以下方法为消息协定配置发布拓扑:
Bus.Factory.CreateUsingXxx(cfg =>
{
cfg.Publish<YourMessageType>(x => x.ExchangeType = ExchangeType.Topic);
});
然后,当您发布消息时,它将使用该交换类型。您还可以使用消息拓扑更改实体的名称:
cfg.Message<YourMessageType>(x => x.SetEntityName("your-exchange"));
这将为类型指定交换名称。
有一个sample表示支持直接交换,主题交换在客户端类似。