是否可以将自定义 headers 添加到 ServiceStack Redis 消息中?
Is it possible to add custom headers to a ServiceStack Redis message?
当使用 ServiceStack 将消息发送到 Redis 时,框架会添加所有标准 header(Priority
、CreatedDate
、...)。但是,是否可以向该消息添加任何自定义 header?我有一组相互传递消息的微服务,我想包括一个共享的 header.
到目前为止,我已经探索了实现我自己的 IMessage 或 IMessageFactory 版本,并且在 IOC 容器中对其进行 boostrapping 时,我查看了 RedisMqServer
中的不同属性,但我还没有找到任何地方我可以添加一个新的 header.
提前致谢!
您可以使用 IMessage.Tag
发送任何用户定义的标签文本,例如:
using (var mqClient = mqServer.CreateMessageQueueClient())
{
mqClient.Publish(new Message<HelloIntro>(new Hello { Name = "World" }) {
Tag = "Custom"
});
}
否则,我刚刚添加了对发送 Custom Headers in this commit 的支持,现在您还可以在新的 IMessage.Meta
字符串字典中发送 Custom Headers,例如:
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 处理程序现在还可以 return 一个 IMessage
响应,它允许完整 round-tripping 任何自定义 headers。
此更改适用于现在 available on MyGet 的 v4.0.57。
当使用 ServiceStack 将消息发送到 Redis 时,框架会添加所有标准 header(Priority
、CreatedDate
、...)。但是,是否可以向该消息添加任何自定义 header?我有一组相互传递消息的微服务,我想包括一个共享的 header.
到目前为止,我已经探索了实现我自己的 IMessage 或 IMessageFactory 版本,并且在 IOC 容器中对其进行 boostrapping 时,我查看了 RedisMqServer
中的不同属性,但我还没有找到任何地方我可以添加一个新的 header.
提前致谢!
您可以使用 IMessage.Tag
发送任何用户定义的标签文本,例如:
using (var mqClient = mqServer.CreateMessageQueueClient())
{
mqClient.Publish(new Message<HelloIntro>(new Hello { Name = "World" }) {
Tag = "Custom"
});
}
否则,我刚刚添加了对发送 Custom Headers in this commit 的支持,现在您还可以在新的 IMessage.Meta
字符串字典中发送 Custom Headers,例如:
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 处理程序现在还可以 return 一个 IMessage
响应,它允许完整 round-tripping 任何自定义 headers。
此更改适用于现在 available on MyGet 的 v4.0.57。