ServiceStack.RabbitMq - 如何在消息上设置自定义属性
ServiceStack.RabbitMq - how to set custom attributes on messages
我们使用 ServiceStack.RabbitMq,但我找不到在 rabbit mq 消息上放置自定义属性的方法。我希望发布者在消息上设置属性并让工作人员阅读它。
一个变体是将该属性作为请求正文的一部分移动,但我有很多请求,老实说,请求根本不应该知道这种信息——因为那是消息的元数据。
知道如何实现吗?
您可以将自定义属性添加到您正在下推 queue 的 object 或将该属性添加到兔子消息元数据 header table。 RabbitMQ 消息具有各种元数据属性,可以在发布消息时设置这些属性。
勾选this
您可以使用 Message Filters in RabbitMqServer 添加和内省消息属性,例如:
var mqServer = new RabbitMqServer("localhost")
{
PublishMessageFilter = (queueName, properties, msg) => {
properties.AppId = "app:{0}".Fmt(queueName);
},
GetMessageFilter = (queueName, basicMsg) => {
var props = basicMsg.BasicProperties;
receivedMsgType = props.Type; //automatically added by RabbitMqProducer
receivedMsgApp = props.AppId;
}
};
我们使用 ServiceStack.RabbitMq,但我找不到在 rabbit mq 消息上放置自定义属性的方法。我希望发布者在消息上设置属性并让工作人员阅读它。
一个变体是将该属性作为请求正文的一部分移动,但我有很多请求,老实说,请求根本不应该知道这种信息——因为那是消息的元数据。
知道如何实现吗?
您可以将自定义属性添加到您正在下推 queue 的 object 或将该属性添加到兔子消息元数据 header table。 RabbitMQ 消息具有各种元数据属性,可以在发布消息时设置这些属性。
勾选this
您可以使用 Message Filters in RabbitMqServer 添加和内省消息属性,例如:
var mqServer = new RabbitMqServer("localhost")
{
PublishMessageFilter = (queueName, properties, msg) => {
properties.AppId = "app:{0}".Fmt(queueName);
},
GetMessageFilter = (queueName, basicMsg) => {
var props = basicMsg.BasicProperties;
receivedMsgType = props.Type; //automatically added by RabbitMqProducer
receivedMsgApp = props.AppId;
}
};