如何解决如何在 Masstransit 中发布消息之前添加自定义标题
在将消息发布到队列之前,我尝试在消息中添加额外的标头。 我无法在创建总线控制时添加 UseSendFilter() 和 UseConsumeFilter() 请在下面找到消息负载和总线配置。 请注意目标框架是 dotnet v4.8
有效载荷:
using System;
using MassTransit;
namespace Payload
{
public interface IPublishMessage : CorrelatedBy<Guid>
{
string Name { get; set; }
DateTime TimeStamp { get; set; }
string Sender { get; set; }
QueueType QueueType { get; set; }
MessageType MessageType { get; set; }
ContentType ContentType { get; set; }
string Content { get; set; }
}
}
出版商:
var busControl = Bus.Factory.CreateUsingAzureServiceBus(busFactoryConfigurator =>
{
busFactoryConfigurator.Host(new Uri(Config.ConnectionString),host =>
{
host.OperationTimeout = TimeSpan;
//TODO Add Token Provider
});
busFactoryConfigurator.UseSendContext()
busFactoryConfigurator.SendTopology.UseCorrelationId<IPublishMessage>(x => x.CorrelationId);
// TODO Add Headers from IPublishMessage
// TODO Refer https://masstransit-project.com/advanced/middleware/scoped.html
busFactoryConfigurator.Message<IPublishMessage>(topologyConfigurator =>
{
topologyConfigurator.SetEntityName(Config.TopicExchange);
});
});
await busControl.StartAsync(CancellationTokenSource.Token);
await busControl.Publish(message.Content,CancellationTokenSource.Token);
await busControl.StopAsync(CancellationTokenSource.Token);
我想将以下属性从有效负载添加到标头:
string Name { get; set; }
DateTime TimeStamp { get; set; }
string Sender { get; set; }
QueueType QueueType { get; set; }
MessageType MessageType { get; set; }
ContentType ContentType { get; set; }
解决方法
在发布/发送消息时添加标头是 covered in the documentation。
在您的示例中:
await busControl.Publish(message.Content,context =>
{
context.Headers.Set("QueueType",message.QueueType.ToString());
context.Headers.Set("MessageType",message.MessageType.ToString());
// etc.
},CancellationTokenSource.Token);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。