using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
namespace Pole.ReliableMessage.Storage.Abstraction
{
public interface IMessageStorage
{
///
///
///
///
///
Task Add(Message message);
Task Delete(Expression> filter);
///
///
///
///
///
///
Task> GetMany(Expression> filter, int count);
///
///
///
///
///
///
Task GetOne(Expression> filter);
///
/// 批量更新
/// 更新这几个值 MessageStatusId , RetryTimes LastRetryUTCTime, NextRetryUTCTime
///
///
///
Task Save(IEnumerable messages);
///
/// 检查 消息的状态,如果不是指定状态则返回true,并且更新状态到指定状态 ,如果已经是指定状态返回false
///
///
///
///
Task CheckAndUpdateStatus(Expression> filter, MessageStatus messageStatus);
Task UpdateStatus(Expression> filter, MessageStatus messageStatus);
}
}