c# - 如何在 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; }
解决方案
文档中介绍了在发布/发送消息时添加标头。
在您的示例中:
await busControl.Publish(message.Content, context =>
{
context.Headers.Set("QueueType", message.QueueType.ToString());
context.Headers.Set("MessageType", message.MessageType.ToString());
// etc.
}, CancellationTokenSource.Token);
推荐阅读
- javascript - 删除节点后未删除 D3.js 链接
- html - 使用图像绝对位置时使整个选择可点击
- javascript - NodeJS:无效的数组长度分配失败 - JavaScript 堆内存不足
- python - 仅在 MongoDB 中返回匹配的属性
- javascript - 如何重定向顶级路由而不是子路由?
- python - Flask UnitTests 访问错误的 URI
- php - 了解 wordpress 的权限
- laravel - 迁移和模型之间有什么关系?
- saxon - Saxon 是否提供了一种方法来维护地图中键的插入顺序?
- java - 如何在 cognito 中使用 adminGetUserRequest 获取用户属性