servicestack 如何在消息之前记录消息MQ消息';它转换成DTO了吗?
在连接现有web服务以处理MQMessage时,我希望能够在将消息转换为请求对象并传递给服务端点之前将其序列化到数据库。如果apphost文件中有这段代码,我该怎么做servicestack 如何在消息之前记录消息MQ消息';它转换成DTO了吗?,servicestack,rabbitmq,servicestack,Rabbitmq,在连接现有web服务以处理MQMessage时,我希望能够在将消息转换为请求对象并传递给服务端点之前将其序列化到数据库。如果apphost文件中有这段代码,我该怎么做 var mqServer = container.Resolve<IMessageService>(); //todo: would like to log the message here, instead of the Service, or Global filter mqServer.RegisterHandl
var mqServer = container.Resolve<IMessageService>();
//todo: would like to log the message here, instead of the Service, or Global filter
mqServer.RegisterHandler<LeadInformation>(ServiceController.ExecuteMessage);
mqServer.Start();
var mqServer=container.Resolve();
//todo:是否在此处记录消息,而不是服务或全局筛选器
mqServer.RegisterHandler(ServiceController.ExecuteMessage);
mqServer.Start();
更新
这就是我希望实现的
var mqServer = container.Resolve<IMessageService>();
mqServer.RegisterHandler<LeadInformation>(m =>
{
var db = container.Resolve<IFrontEndRepository>();
db.SaveMessage(m as Message);
return ServiceController.ExecuteMessage(m);
});
mqServer.Start();
var mqServer=container.Resolve();
mqServer.RegisterHandler(m=>
{
var db=container.Resolve();
db.SaveMessage(m作为消息);
返回ServiceController.ExecuteMessage(m);
});
mqServer.Start();
这有什么缺点吗
谢谢,,
Stephen您可以将消息保存在RegisterHandler中
mqServer.RegisterHandler<LeadInformation>(m =>
{
var db = container.Resolve<IFrontEndRepository>();
db.SaveMessage(m as Message);
return ServiceController.ExecuteMessage(m);
});
mqServer.RegisterHandler(m=>
{
var db=container.Resolve();
db.SaveMessage(m作为消息);
返回ServiceController.ExecuteMessage(m);
});
或者,如果愿意,使用RequestFilter:
mqServer.RequestFilter = m =>
{
var db = container.Resolve<IFrontEndRepository>();
db.SaveMessage(m as Message);
return m;
});
mqServer.RequestFilter=m=>
{
var db=container.Resolve();
db.SaveMessage(m作为消息);
返回m;
});
使用AppSelfHostBase,似乎无法获取要编译的RequestFilter。如果未使用具体类型,则需要强制转换它,例如:((RabbitMqServer)mqServer)。RequestFilter=代码>