services.AddInitQ(m =>
{
//没消息时挂起时长(毫秒)
m.SuspendTime = 1000;
//每次消费消息间隔时间(毫秒)
m.IntervalTime = 1000;
//redis服务器地址
m.ConnectionString = AppSettingsConstVars.RedisConfigConnectionString;
//对应的订阅者类,需要new一个实例对象,当然你也可以传参,比如日志对象
m.ListSubscribe = new List<Type>() {
typeof(InitCWorksCollectionSubscribe),
typeof(InitBBCommonCollectionSubscribe),
typeof(InitBBComposeCollectionSubscribe),
typeof(InitSWorksCollectionSubscribe),
};
//显示日志
m.ShowLog = true;
});
public class InitCWorksCollectionSubscribe: IRedisSubscribe
{
private readonly IRedisOperationRepository _Redis;
private readonly IMint_WorksService _WorksService;
public InitCommonWorksCollectionSubscribe(IRedisOperationRepository Redis
, IMint_WorksService WorksService)
{
_Redis = Redis;
_WorksService = WorksService;
}
/// <summary>
/// 初始化信息
/// </summary>
/// <returns></returns>
[Subscribe(RedisMessageQueueKey.Works_Common_Init_Collection)]
public async Task InitCollection(string content)
{
var works_ary = JsonConvert.DeserializeObject<List<string>>(content);
if (works_ary != null && works_ary.Count > 0)
{
try
{
var works = await _WorksService.QueryListByClauseAsync(w => works_ary.Contains(w.works_id));
}
catch (Exception ex)
{
Thread.Sleep(3000);
await _Redis.ListLeftPushAsync(RedisMessageQueueKey.Works_Common_Init_Collection, works_ary.ObjectToJson());
}
}
}
}
await _Redis.ListLeftPushAsync(RedisMessageQueueKey.Works_Common_Init_Collection, "消息内容");
public class InitCWorksCollectionSubscribe: IRedisSubscribe
{
private readonly IRedisOperationRepository _Redis;
private readonly IMint_WorksService _WorksService;
await _Redis.ListLeftPushAsync(RedisMessageQueueKey.Works_Common_Init_Collection, "消息内容");