我尝试使用 StackExchange.Redis 作为消息代理。它工作得很好,但我现在有一个缺点。我需要 MQ 来通信 2 个 ASP.NET Core 项目。 ConnectionMultiplexer有一个Subscriber方法将相同的 Action 委托订阅到 MQ。有什么办法可以不通过Startup课堂来做到这一点吗?
首先,我尝试借助属性类来实现这一点,代码如下
public class FireAndForgetAttribute<T> : Attribute
{
public FireAndForgetAttribute(IConnectionMultiplexer plexer, string channelName, Action<T> reaction)
{
var subscriber = plexer.GetSubscriber();
subscriber.Subscribe(channelName, (channel, message) =>
{
var data = JsonConvert.Deserialize<T>(message);
reaction.Invoke(data);
}, flags: CommandFlags.FireAndForget);
}
}
但这不是一个好方法,因为 C# 中仍然没有通用属性(只是在路线图中标记为讨论的,没有其他),而且我也无法在这里传递Action<T>具体对象。
PPS 抱歉,我忘了改变我的问题的主题。现在是正确的了。
子衿沉夜
相关分类