示例#1
0
文件: Mailbox.cs 项目: crapitan/Fiffi
 public static Func <Func <IReliableStateManager, ITransaction, IEvent, Task>, CancellationToken, Task> Reader(this IReliableStateManager stateManager, Func <EventData, IEvent> deserializer, string mailBoxName)
 => async(f, token) =>
 {
     await stateManager.UseTransactionAsync(tx =>
                                            stateManager.DequeueAsync(
                                                tx,
                                                e => f(stateManager, tx, e),
                                                deserializer,
                                                token, queueName: mailBoxName)
                                            );
 };
示例#2
0
 public static Task DequeueAsync <T>(this IReliableStateManager stateManager, Func <T, Task> action,
                                     Func <EventData, T> deserializer,
                                     CancellationToken cancellationToken, string queueName = defaultOutBoxQueueName)
 => stateManager.UseTransactionAsync(tx => stateManager.DequeueAsync(tx, action, deserializer, cancellationToken, true, queueName), autoCommit: false);
示例#3
0
 public static Task EnqueuAsync <T>(this IReliableStateManager stateManager, IEnumerable <T> events, Func <T, EventData> serialzer, string queueName = defaultOutBoxQueueName)
     where T : IEvent
 => stateManager.UseTransactionAsync(tx => stateManager.EnqueuAsync(tx, events, serialzer, queueName));
示例#4
0
 //TODO move to queue etx
 public static Task EnqueuAsync(this IReliableStateManager stateManager, IEvent @event, Func <IEvent, EventData> serialzer, string queueName)
 => stateManager.UseTransactionAsync(tx => stateManager.EnqueuAsync(tx, new[] { @event }, serialzer, queueName));