gpt4 book ai didi

c# - 是否可以将自定义 header 添加到 ServiceStack Redis 消息中?

转载 作者:IT王子 更新时间:2023-10-29 06:11:17 25 4
gpt4 key购买 nike

当使用 ServiceStack 将消息发送到 Redis 时,框架会添加所有标准 header (PriorityCreatedDate ...)。但是,是否可以向该消息添加任何自定义 header ?我有一组相互传递消息的微服务,我想包含一个共享 header 。

到目前为止,我已经探索了实现我自己的 IMessage 或 IMessageFactory 版本,并且在 IOC 容器中对其进行 boostrapping 时,我查看了 RedisMqServer 中的不同属性,但我还没有找到我可以在任何地方添加新标题。

提前致谢!

最佳答案

您可以使用 IMessage.Tag 发送任何用户定义的标签文本,例如:

using (var mqClient = mqServer.CreateMessageQueueClient())
{
mqClient.Publish(new Message<HelloIntro>(new Hello { Name = "World" }) {
Tag = "Custom"
});
}

否则我刚刚添加了对发送自定义 header 的支持 in this commit现在还可以让您在新的 IMessage.Meta 字符串字典中发送自定义 header ,例如:

using (var mqClient = mqServer.CreateMessageQueueClient())
{
mqClient.Publish(new Message<HelloIntro>(new Hello { Name = "World" }) {
Meta = new Dictionary<string, string> { { "Custom", "Header" } }
});
}

您可以在您的 MQ RegisterHandler 中访问它,例如:

mqServer.RegisterHandler<Hello>(m =>
new Message<HelloResponse>(new HelloResponse {
Result = "Hello, {0}!".Fmt(m.GetBody().Name)
}) {
Meta = m.Meta
});

您的 MQ 处理程序现在还可以返回一个 IMessage 响应,它允许完全往返任何自定义 header 。

此更改从现在的 v4.0.57 开始可用 available on MyGet .

关于c# - 是否可以将自定义 header 添加到 ServiceStack Redis 消息中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37230859/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com