public async Task Test_Export_Custom_Scale() { var data = new List <ExportScale>(); for (var i = 0; i < 100; i++) { data.Add(new ExportScale { Id = SnowflakeId.CurrentTimeFunc().ToString(), Byte = Conv.ToByte(i), NullableByte = i % 2 == 0 ? null : Conv.ToByteOrNull(i), Short = Conv.ToShort(i), NullableShort = i % 2 == 0 ? null : Conv.ToShortOrNull(i), Int = i, NullableInt = i % 2 == 0 ? null : Conv.ToIntOrNull(i), Long = i, NullableLong = i % 2 == 0 ? null : Conv.ToLongOrNull(i), Float = i * 0.4222222f, NullableFloat = i % 2 == 0 ? null : Conv.ToFloatOrNull(i) * 0.4222222f, Double = i * 0.4222222, NullableDouble = i % 2 == 0 ? null : Conv.ToDoubleOrNull(i) * 0.4222222, Decimal = i * 0.4222222m, NullableDecimal = i % 2 == 0 ? null : Conv.ToDecimalOrNull(i) * 0.4222222m, }); } var bytes = await _excelExportService.ExportAsync(new ExportOptions <ExportScale>() { Data = data, HeaderRowIndex = 0, DataRowStartIndex = 1, }); await File.WriteAllBytesAsync($"D:\\测试导出_{DateTime.Now:yyyyMMddHHmmss}.xlsx", bytes); }
public MediumMessage StoreReceivedMessage(string name, string group, Message message) { var mdMessage = new MediumMessage { DbId = SnowflakeId.Default().NextId().ToString(), Origin = message, Added = DateTime.Now, ExpiresAt = null, Retries = 0 }; object[] sqlParams = { new SqlParameter("@Id", mdMessage.DbId), new SqlParameter("@Name", name), new SqlParameter("@Group", group), new SqlParameter("@Content", _serializer.Serialize(mdMessage.Origin)), new SqlParameter("@Retries", mdMessage.Retries), new SqlParameter("@Added", mdMessage.Added), new SqlParameter("@ExpiresAt", mdMessage.ExpiresAt.HasValue ? (object)mdMessage.ExpiresAt.Value : DBNull.Value), new SqlParameter("@StatusName", nameof(StatusName.Scheduled)) }; StoreReceivedMessage(sqlParams); return(mdMessage); }
public async Task GetReceivedMessageAsync_Test() { var sql = $@" INSERT INTO ""cap"".""received""(""Id"",""Name"",""Group"",""Content"",""Retries"",""Added"",""ExpiresAt"",""StatusName"") VALUES(@Id,@Name,@Group,@Content,@Retries,@Added,@ExpiresAt,@StatusName);"; var insertedId = SnowflakeId.Default().NextId(); var receivedMessage = new CapReceivedMessage { Id = insertedId, Name = "PostgreSqlStorageConnectionTest", Content = "", Group = "mygroup", StatusName = StatusName.Scheduled }; using (var connection = ConnectionUtil.CreateConnection()) { await connection.ExecuteAsync(sql, receivedMessage); } var message = await _storage.GetReceivedMessageAsync(insertedId); Assert.NotNull(message); Assert.Equal(StatusName.Scheduled, message.StatusName); Assert.Equal("PostgreSqlStorageConnectionTest", message.Name); Assert.Equal("mygroup", message.Group); }
/// <summary> /// /// </summary> /// <param name="maxThread">最大线程数</param> /// <param name="duration">默认无任务后休息0ms</param> private TaskPool(int maxThread, int duration = 0) { this._taskBaseCommon = new TaskBaseCommon <T>(maxThread, duration); this._tasks = new List <TaskBaseInfo>(); this._isExcuteFinish = false; this._snowflake = new SnowflakeId(3, 0); }
public MediumMessage StoreReceivedMessage(string name, string group, Message message) { var sql = $"INSERT INTO {_recName}(\"Id\",\"Version\",\"Name\",\"Group\",\"Content\",\"Retries\",\"Added\",\"ExpiresAt\",\"StatusName\")" + $"VALUES(@Id,'{_capOptions.Value.Version}',@Name,@Group,@Content,@Retries,@Added,@ExpiresAt,@StatusName) RETURNING \"Id\";"; var mdMessage = new MediumMessage { DbId = SnowflakeId.Default().NextId().ToString(), Origin = message, Added = DateTime.Now, ExpiresAt = null, Retries = 0 }; var content = _serializer.Serialize(mdMessage.Origin); this.DbConnection.Execute(sql, new { Id = long.Parse(mdMessage.DbId), Group = group, Name = name, Content = content, mdMessage.Retries, mdMessage.Added, mdMessage.ExpiresAt, StatusName = nameof(StatusName.Scheduled) }, transaction: DbTransaction); return(mdMessage); }
public async Task GetReceivedMessageAsync_Test() { var sql = $@" INSERT INTO `cap.received`(`Id`,`Version`,`Name`,`Group`,`Content`,`Retries`,`Added`,`ExpiresAt`,`StatusName`) VALUES(@Id,'v1',@Name,@Group,@Content,@Retries,@Added,@ExpiresAt,@StatusName);"; var insertedId = SnowflakeId.Default().NextId(); var receivedMessage = new CapReceivedMessage { Id = insertedId, Name = "MySqlStorageConnectionTest", Content = "", Group = "mygroup", StatusName = StatusName.Scheduled }; using (var connection = ConnectionUtil.CreateConnection()) { await connection.ExecuteAsync(sql, receivedMessage); } var message = await _storage.GetReceivedMessageAsync(insertedId); Assert.NotNull(message); Assert.Equal(StatusName.Scheduled, message.StatusName); Assert.Equal("MySqlStorageConnectionTest", message.Name); Assert.Equal("mygroup", message.Group); }
public void getId_test() { var unixTimeMilliseconds = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); Thread.Sleep(1000); var worker1 = new SnowflakeId(1, unixTimeMilliseconds); var worker2 = new SnowflakeId(2, unixTimeMilliseconds); var worker3 = new SnowflakeId(3, unixTimeMilliseconds); var worker4 = new SnowflakeId(4, unixTimeMilliseconds); HashSet <long> ids = new HashSet <long>(); for (int i = 0; i < 1000000; i++) { ids.Add(worker1.NextId()); } for (int i = 0; i < 1000000; i++) { ids.Add(worker2.NextId()); } for (int i = 0; i < 1000000; i++) { ids.Add(worker3.NextId()); } for (int i = 0; i < 1000000; i++) { ids.Add(worker4.NextId()); } ids.Count.ShouldBe(1000000 * 4); Should.Throw <ArgumentException>((() => new SnowflakeId(-54, 1))); Should.Throw <ArgumentException>((() => new SnowflakeId(1, DateTimeOffset.UtcNow.AddDays(1).ToUnixTimeMilliseconds()))); }
public MediumMessage StoreReceivedMessage(string name, string group, Message message) { var mdMessage = new MediumMessage { DbId = SnowflakeId.Default().NextId().ToString(), Origin = message, Added = DateTime.Now, ExpiresAt = null, Retries = 0 }; var content = _serializer.Serialize(mdMessage.Origin); var collection = _database.GetCollection <ReceivedMessage>(_options.Value.ReceivedCollection); var store = new ReceivedMessage { Id = long.Parse(mdMessage.DbId), Group = group, Name = name, Content = content, Added = mdMessage.Added, ExpiresAt = mdMessage.ExpiresAt, Retries = mdMessage.Retries, Version = _capOptions.Value.Version, StatusName = nameof(StatusName.Scheduled) }; collection.InsertOne(store); return(mdMessage); }
public MongoDBMonitoringApiTest() { _api = new MongoDBMonitoringApi(MongoClient, MongoDBOptions); var collection = Database.GetCollection <PublishedMessage>(MongoDBOptions.PublishedCollection); collection.InsertMany(new[] { new PublishedMessage { Id = SnowflakeId.Default().NextId(), Added = DateTime.Now.AddHours(-1), StatusName = "Failed", Version = "v1", Content = "abc" }, new PublishedMessage { Id = SnowflakeId.Default().NextId(), Added = DateTime.Now, StatusName = "Failed", Version = "v1", Content = "bbc" } }); }
public MediumMessage StoreReceivedMessage(string name, string group, Message message) { var sql = $"INSERT INTO {_recName}([Id],[Version],[Name],[Group],[Content],[Retries],[Added],[ExpiresAt],[StatusName])" + $"VALUES(@Id,'{_capOptions.Value.Version}',@Name,@Group,@Content,@Retries,@Added,@ExpiresAt,@StatusName);"; var mdMessage = new MediumMessage { DbId = SnowflakeId.Default().NextId().ToString(), Origin = message, Added = DateTime.Now, ExpiresAt = null, Retries = 0 }; var content = StringSerializer.Serialize(mdMessage.Origin); // using var connection = new SqlConnection(_options.Value.ConnectionString); var connection = this.DbConnection; connection.Execute(sql, new { Id = mdMessage.DbId, Group = group, Name = name, Content = content, mdMessage.Retries, mdMessage.Added, mdMessage.ExpiresAt, StatusName = nameof(StatusName.Scheduled) }, DbTransaction); return(mdMessage); }
/// <summary> /// 生成数据库名后缀 /// </summary> /// <returns></returns> public string BuildDirectoryPath(long id) { var sid = new SnowflakeId(id); switch (_mode) { case DirectoryDepthMode.Minute: return(sid.Time.ToString("yyyy/yyyy-MM/yyyy-MM-dd-HH-mm")); case DirectoryDepthMode.Hour: return(sid.Time.ToString("yyyy/yyyy-MM/yyyy-MM-dd-HH")); case DirectoryDepthMode.Day: return(sid.Time.ToString("yyyy/yyyy-MM/yyyy-MM-dd")); case DirectoryDepthMode.Month: return(sid.Time.ToString("yyyy/yyyy-MM")); case DirectoryDepthMode.Year: return(sid.Time.ToString("yyyy")); default: return(string.Empty); } }
async Task <AsyncExecutedResult> CreateAsync(string aggregateRootTypeName, string aggregateRootId) { try { using (var connection = new MySqlConnection(connectionString)) { await connection.ExecuteAsync( BuildSql(createSql, aggregateRootId), new { Id = SnowflakeId.Default().NewId(), AggregateRootTypeName = aggregateRootTypeName, AggregateRootId = aggregateRootId, Version = 1L, CreatedOn = DateTime.UtcNow }); return(AsyncExecutedResult.Success); } } catch (Exception ex) { return(AsyncExecutedResult.Failed(ex)); } }
public EventResponseMessage(SnowflakeId id, string endpoint, string?signature, byte[]?data) { Id = id; Endpoint = endpoint; Signature = signature; Data = data; }
public async void GetReceivedMessagesOfNeedRetry_TestAsync() { var msgs = await _connection.GetReceivedMessagesOfNeedRetry(); msgs.Should().BeEmpty(); var id = SnowflakeId.Default().NextId(); var msg = new CapReceivedMessage { Id = id, Group = "test", Name = "test", Content = "test-content", StatusName = StatusName.Failed }; _connection.StoreReceivedMessage(msg); var collection = Database.GetCollection <CapReceivedMessage>(MongoDBOptions.ReceivedCollection); var updateDef = Builders <CapReceivedMessage> .Update.Set(x => x.Added, DateTime.Now.AddMinutes(-5)); await collection.UpdateOneAsync(x => x.Id == id, updateDef); msgs = await _connection.GetReceivedMessagesOfNeedRetry(); msgs.Should().HaveCountGreaterThan(0); }
public static void Main(string[] args) { var container = new ServiceCollection(); container.AddLogging(x => x.AddConsole()); if (_useCustomSelector) { container.AddSingleton <IConsumerServiceSelector, GenericConsumerServiceSelector <IMessageSubscriber, MessageSubscriptionAttribute> >(); } container.AddTransient <IMessageSubscriber, CustomSubscriber>(); container.AddTransient <ICapSubscribe, CustomSubscriber>(); container.AddCap(x => { x.UseInMemoryStorage(); x.UseRabbitMQ(z => { z.ExchangeName = "MyConsumerSelector.Generic"; z.HostName = "localhost"; z.UserName = "******"; z.Password = "******"; z.CustomHeaders = e => new List <KeyValuePair <string, string> > { new(DotNetCore.CAP.Messages.Headers.MessageId, SnowflakeId.Default().NextId().ToString()), new(DotNetCore.CAP.Messages.Headers.MessageName, e.RoutingKey) }; }); });
public MediumMessage StoreReceivedMessage(string name, string @group, Message message) { var mdMessage = new MediumMessage { DbId = SnowflakeId.Default().NextId().ToString(), Origin = message, Added = DateTime.Now, ExpiresAt = null, Retries = 0 }; ReceivedMessages[mdMessage.DbId] = new MemoryMessage { DbId = mdMessage.DbId, Origin = mdMessage.Origin, Group = group, Name = name, Content = StringSerializer.Serialize(mdMessage.Origin), Retries = mdMessage.Retries, Added = mdMessage.Added, ExpiresAt = mdMessage.ExpiresAt, StatusName = StatusName.Scheduled }; return(mdMessage); }
private Internal.DefaultConsumerInvoker InitDefaultConsumerInvoker(IServiceProvider provider) { var invoker = new Internal.DefaultConsumerInvoker( _loggerFactory, provider, _mockMessagePacker.Object, _mockModelBinderFactory.Object); var message = new CapReceivedMessage { Id = SnowflakeId.Default().NextId(), Name = "test", Content = DateTime.Now.ToString(), StatusName = StatusName.Scheduled, Group = "Group.Test" }; _mockMessagePacker .Setup(x => x.UnPack(It.IsAny <string>())) .Returns(new CapMessageDto(message.Content)); _messageContext = new MessageContext { Group = message.Group, Name = message.Name, Content = Helper.ToJson(message) }; return(invoker); }
public MediumMessage StoreReceivedMessage(string name, string group, Message message) { var sql = $@"INSERT INTO `{_initializer.GetReceivedTableName()}`(`Id`,`Version`,`Name`,`Group`,`Content`,`Retries`,`Added`,`ExpiresAt`,`StatusName`) VALUES(@Id,'{_options.Value.Version}',@Name,@Group,@Content,@Retries,@Added,@ExpiresAt,@StatusName);"; var mdMessage = new MediumMessage { DbId = SnowflakeId.Default().NextId().ToString(), Origin = message, Added = DateTime.Now, ExpiresAt = null, Retries = 0 }; var content = StringSerializer.Serialize(mdMessage.Origin); using var connection = new MySqlConnection(_options.Value.ConnectionString); connection.Execute(sql, new { Id = mdMessage.DbId, Group = @group, Name = name, Content = content, mdMessage.Retries, mdMessage.Added, mdMessage.ExpiresAt, StatusName = nameof(StatusName.Scheduled) }); return(mdMessage); }
public MediumMessage StoreReceivedMessage(string name, string group, Message message) { var mdMessage = new MediumMessage { DbId = SnowflakeId.Default().NextId().ToString(), Origin = message, Added = DateTime.Now, ExpiresAt = null, Retries = 0 }; object[] sqlParams = { new OracleParameter(":Id", long.Parse(mdMessage.DbId)), new OracleParameter(":Name", name), new OracleParameter(":Group1", group), new OracleParameter(":Content", OracleDbType.Clob) { Value = _serializer.Serialize(mdMessage.Origin) }, new OracleParameter(":Retries", mdMessage.Retries), new OracleParameter(":Added", mdMessage.Added), new OracleParameter(":ExpiresAt", mdMessage.ExpiresAt.HasValue ? (object)mdMessage.ExpiresAt.Value : DBNull.Value), new OracleParameter(":StatusName", nameof(StatusName.Scheduled)) }; StoreReceivedMessage(sqlParams); return(mdMessage); }
public void NextIdTest() { var result = SnowflakeId.Default().NextId(); Assert.IsType <long>(result); Assert.True(result > 0); Assert.True(result.ToString().Length == long.MaxValue.ToString().Length); }
/// <summary> /// /// </summary> /// <param name="userName"></param> /// <param name="imageUrl"></param> /// <param name="message"></param> public MessageAggregate(string userName, string imageUrl, string message) { this.Id = SnowflakeId.Default().NextId().ToString(); this.UserName = userName; this.ImageUrl = imageUrl; this.Message = message; this.CreateTime = DateTime.Now; }
public void OnApplicationCommand(IApplicationCommandingContext context, StartWithdrawApplicationCommand appCommand) { var transactionId = SnowflakeId.Default().NextId(); var command = new StartWithdrawTransactionDomainCommand(transactionId, appCommand.AccountId, appCommand.AccountName, appCommand.Amount, appCommand.Bank); context.PublishDomainCommand(command); }
/// <summary> /// /// </summary> /// <param name="cost"></param> /// <param name="itemType"></param> /// <param name="remark"></param> /// <param name="billId"></param> public BillItem(BillItemTypeEnum itemType, decimal cost, string remark, string billId) { Id = SnowflakeId.Default().NextId().ToString(); Cost = cost; BillItemTypeEnum = itemType; Remark = remark; BillId = billId; }
/// <summary> /// /// </summary> /// <param name="userName"></param> /// <param name="password"></param> /// <param name="realName"></param> /// <param name="email"></param> public SystemUser(string userName, string password, string realName, string email) { this.Id = SnowflakeId.Default().NextId().ToString(); this.UserName = userName; this.Password = password; this.RealName = realName; this.Email = email; }
/// <summary> /// 创建订单 /// </summary> /// <param name="person"></param> public Bill(string person) { this.Id = SnowflakeId.Default().NextId().ToString(); this.Person = person; this.TotalCost = 0; this.BillCreateTime = DateTime.Now; this.BillName = $"{this.BillCreateTime.ToString("yyyy-MM-dd")}-账单"; this.BillItems = new List <BillItem>(); }
public MemoryCache(IRepository repository, IBackgroundWorker backgroundWorker, ILogger <MemoryCache> logger, VoguediOptions options) { this.repository = repository; this.backgroundWorker = backgroundWorker; this.logger = logger; expiration = options.AggregateRootExpiration; backgroundWorkerKey = $"{nameof(MemoryCache)}_{SnowflakeId.Default().NewId()}"; cacheItemMapping = new ConcurrentDictionary <string, AggregateRootCacheItem>(); }
public ApplicationUser(string userName, string password) { Id = SnowflakeId.Default().NextId(); UserName = userName.NotNull(nameof(userName)); Password = password.NotNull(nameof(password)); CreateTime = DateTimeOffset.UtcNow; Status = UserStatus.AwaitingActive; AddDomainEvent(new UserCreatedEvent(Id, UserName, CreateTime)); }
/// <summary> /// /// </summary> /// <param name="name"></param> /// <param name="code"></param> /// <param name="address"></param> /// <param name="icon"></param> /// <param name="menuType"></param> /// <param name="parentId" public SystemMenu(string name, string code, string address, string icon, int menuType, string parentId) { this.Id = SnowflakeId.Default().NextId().ToString(); this.Name = name; this.Code = code; this.Address = address; this.Icon = icon; this.MenuType = menuType; this.ParentId = parentId == "" ? null : parentId; }
public EventCommitter(ICommittingEventQueueFactory queueFactory, ICache cache, IBackgroundWorker backgroundWorker, ILogger <EventCommitter> logger, VoguediOptions options) { this.queueFactory = queueFactory; this.cache = cache; this.backgroundWorker = backgroundWorker; this.logger = logger; expiration = options.MemoryQueueExpiration; backgroundWorkerKey = $"{nameof(EventCommitter)}_{SnowflakeId.Default().NewId()}"; queueMapping = new ConcurrentDictionary <string, ICommittingEventQueue>(); }
public void Publish <T>(string name, T contentObj, string callbackName = null) { var message = new CapPublishedMessage { Id = SnowflakeId.Default().NextId(), Name = name, Content = Serialize(contentObj, callbackName), StatusName = StatusName.Scheduled }; PublishAsyncInternal(message).GetAwaiter().GetResult(); }