CAP

Distributed transaction solution in micro-service base on eventually consistency, also an eventbus with Outbox pattern

MIT License

Stars
6.5K
Committers
110

Bot releases are visible (Hide)

CAP - 3.0.0

Published by yang-xiaodong almost 5 years ago

Breaking Changes

In this version, we have made major improvements to the code structure, which have introduced some destructive changes.

  • Publisher and Consumer are not compatible with older versions
    This version is not compatible with older versions of the message protocol because we have improved the format in which messages are published and stored.

  • Interface changes
    We have done a lot of refactoring of the code, and some of the interfaces may be incompatible with older versions

  • Detach the dashboard project

Features:

  • Supports .NET Core 3.1.
  • Upgrade dependent packages.
  • New serialization interface ISerializer to support serialization of message body sent to MQ.
  • Add new api for ICapPublisher to publish message with headers.
  • Diagnostics event structure and names improved. #378
  • Support consumer method to read the message headers. #472
  • Support rename message storage tables. #435
  • Support for Kafka to write such as Offset and Partition to the header. #374
  • Improved the processor retry interval time. #444

Bug Fixed:

  • Fixed SqlServer dashboard sql query bug. #470
  • Fixed Kafka health check bug. #436
  • Fixed dashboard bugs. #412 #404
  • Fixed transaction bug for sql server when using EF. #402
CAP - 2.6.0

Published by yang-xiaodong about 5 years ago

Features:

Bug Fixed:

  • SQL Server Options Bug.
  • Fix transaction scope disposed bug. (#365)
  • Fix thread safe issue of ICapPublisher bug. (#371)
  • Improved Ctrl+C action raised exception issue.
  • Fixed asynchronous exception catching bug of sending.
  • Fix MatchPoundUsingRegex "." not escaped bug (#373)
CAP - 2.5.1

Published by yang-xiaodong over 5 years ago

Features:

  • Improved logs record.
  • Upgrade dependent nuget packages version. (MySqlConnector, confluent-kafka-dotnet-1.0 )
  • NodeId type change to string of DiscoveryOptions for Consul. (#314)
  • Change the IConsumerServiceSelector interface access modifier to public. (#333)
  • Improved RabbitMQOptions to provide extensions option to configure the client original configuration. (#350)
  • Add index for MongoDB CAP collections. (#353)

Bugs Fixed:

  • Fixed consumer re-register transport bug. (#329)
  • Handle messages retrieval failure. (#324)
  • Fixed DiagnosticListener null reference exception bug. (#335)
  • Add subscription name validation for the AzureServerBus. (#344)
  • Fixed thread safety issues of publisher. (#331)
CAP - 2.5.0

Published by yang-xiaodong over 5 years ago

Features:

  • Support Azure Service Bus. #307
  • Support In-Memory Storage. #296
  • Upgrade Dapper to version 1.60.1
  • Support read environment variables CAP_WORKERID and CAP_DATACENTERID as the snowflake algorithm workerid and datacenterid.

Bug Fixed:

  • Modify MySQL cap table encoding to utf8mb4. #305
  • Move CapSubscribeAttribute class to DotNetCore.CAP project.
  • Fixed multiple instance snowflake algorithm generating primary key conflicts. #294
CAP - 2.4.2

Published by yang-xiaodong almost 6 years ago

Features:

Startup the CAP with the .NET Core 2.1 BackgroundService. #265
Improved message delivery performance. #261

Bug Fixed:

Fixed PostgreSql version isolation feature bug. #256
Fixed SQL Server sql bug for dashboard search. #266

CAP - 2.4.1

Published by yang-xiaodong almost 6 years ago

Bug Fixed:

  • Fixed MongoDB version isolation feature bug. (#253)
CAP - 2.4.0

Published by yang-xiaodong almost 6 years ago

Features :

  • Supported version options. (#220)
  • Upgrade nuget package to .net core 2.2.

Breaking Changes

In order to support the "version isolation" feature, we introduced a new version field in version 2.4.0 to isolate different versions of the message, so this requires some adjustments to the database table structure. You can use the following SQL to add a version field to your database CAP related table.

MySQL

ALTER TABLE `cap.published` ADD Version VARCHAR(20) NULL;
ALTER TABLE `cap.received` ADD Version VARCHAR(20) NULL;

SQL Server

ALTER TABLE Cap.[Published] ADD Version VARCHAR(20) NULL;
ALTER TABLE Cap.[Received] ADD Version VARCHAR(20) NULL;

PostgreSQL

ALTER TABLE cap.published ADD  "Version" VARCHAR(20) NULL;
ALTER TABLE cap.received ADD "Version" VARCHAR(20) NULL;

MongoDb

db.CapPublishedMessage.update({},{"$set" : {"Version" : "1"}});
db.CapReceivedMessage.update({},{"$set" : {"Version" : "1"}});

Bug Fixed:

  • Fixed different groups of the same topic name in one instance will cause routing bug. (#235)
  • Fixed message presistence bug. (#240)
  • Fixed RabbitMQ topic name contains numbers will cause exception bug. (#181)
CAP - 2.3.1

Published by yang-xiaodong almost 6 years ago

Features:

  • Add Source Link Support
  • Upgrade dependent NuGet packages.

Bug Fixed:

  • Fixed dashboard messages requeue error. ( #205 )
  • Adjustment snowflake workerId to random id.
  • Fixed flush unclaer data bug.
CAP - 2.3.0

Published by yang-xiaodong about 6 years ago

In this version, we made some breaking changes for the publisher API, you can see this blog to understand the story behind.

If you have any migration question, please comment in issue #190.

Breaking Changes:

  • Removed app.UseCap() from Startup.cs
  • Message table primary key data type has been modified to Bigint and non auto-Increment. (#180)
  • New publisher Api. (#188)

Features:

  • MongoDb supported. (#143)
  • Automatic commit transaction. (#191)

Bug Fixed:

  • When the transaction fails, the message is still sent. (#118)
  • Multiple events in one transaction. (#171)
CAP - 2.2.5

Published by yang-xiaodong over 6 years ago

Features:

  • Performance improvement

Bug Fixed:

  • Fixed message enqueue exception.
  • Fixed Retry processor bugs.
  • Fixed Kafka producer exception log without logging when publish message.
  • Fixed Incorrect local IP address judgment of IPv6. (#140)
  • Fixed DateTime localization format conversion error to sql. (#139)
  • Fixed dashboard message page re-requeue and re-executed operate bug. #158
  • Fixed SendAsync or ExecuteAsync recursion retries bug. (#160)
  • Fixed configuration options of FailedThresholdCallback could not be invoke when the value less then three. (#161)
CAP - 2.2.4

Published by yang-xiaodong over 6 years ago

Because version 2.2.3 was not released to nuget, so released 2.2.4.

CAP - 2.2.3

Published by yang-xiaodong over 6 years ago

Features:

  • Improved log output.
  • Upgrade nuget packages.
  • Support pattern matching for consumer. (#132)

Bug Fixed:

  • Fixed exception thrown when terminate the program with Ctrl+C. (#130)
CAP - 2.2.2

Published by yang-xiaodong over 6 years ago

Features:

  • Improved log output. #114
  • Add default timeout configuration for kafka client.
  • Rename configuration options FailedCallback to FailedThresholdCallback.

Bug Fixed:

  • Fixed message enqueue exception.
  • Fixed retry processor bugs.
  • Fixed kafka producer exception log without logging when publish message.
CAP - 2.2.1

Published by yang-xiaodong over 6 years ago

Bug Fixed:

  • Fixed message enqueue bug in v2.2
CAP - 2.2.0

Published by yang-xiaodong over 6 years ago

Features:

  • Remove database queue mode. #102
  • Support for Diagnostics. #112
  • Upgrade dependent nuget packages.

Bug Fixed:

  • Fixed bug of the FailedRetryCount does not increase when raised SubscribeNotFoundException. #90
CAP - 2.1.4

Published by yang-xiaodong over 6 years ago

Features:

  • Remove TableNamePrefix option from MySqlOptions to EFOptions.
  • Upgrade nuget package

Bug Fixed:

  • Fixed the connection bug of getting message from table. (#83)
  • Fixed entityframework rename table name prefix bug. (#84)
  • Fixed sql server scripts bug of create table scheme. (#85)
  • Fixed thread safety issue about KafkaOptions.(#89)
CAP - 2.1.3

Published by yang-xiaodong over 6 years ago

Features:

  • Upgrade dependent nuget packages version.
  • NuGet package include xml doc now.
  • NuGet now contains the CAP symbol files.

Bug Fixed:

  • Fixed thread conflict issue when sending messages with PublishAsync. (#80 )
  • Fixed kafka received message sava failed may caused the mssage loss bug. (#78 )
  • Fixed dashboard js syntax issue. (#77 )
CAP - 2.1.2

Published by yang-xiaodong almost 7 years ago

Bug Fixed:

  • Fixed and improve the performance of mysql processing messages. (#68 #36 )
  • Fixed dashboard manually trigger reconsumption bug. (#67 )
  • Fixed mysql 5.5 table initialization bug. (#65 )
  • Fixed mysql message queue executor bug. (#66 )
CAP - 2.1.1

Published by yang-xiaodong almost 7 years ago

Bug Fixed:

  • Fixed 'dotnet.exe' process incomplete quit when shutdown application (Ctrl+C). (#64)
  • Fixed failure to issue as expected of RabbitMQ SubscriberNotFoundException. (#63)
  • Fixed Sent async message in the loop causes an exception. (#62)
CAP - 2.1.0

Published by yang-xiaodong almost 7 years ago

Features:

  • Interface display optimization of dashboard.
  • Adds a more friendly display when looks at the message content.
  • Now you can see the exception infomation in the message conent filed when message send or executed failed.
  • Optimize LAN to see Dashboard without authentication.
  • Add IContentSerializer interface, you can customize the serialized message content.
  • Add IMessagePacker interface, you can customize wapper of the message.
  • Upgrade the dependent package.

Bug Fixed:

  • Fixed dashboard query bugs.
  • Fixed dashboard multilanguage display bugs.
  • Fixed RabbitMQ connection pool bug.
  • Fixed dashboard display bugs on mobile.