Skip to content

Commit 0b6f104

Browse files
committed
Merge branch '0.6.0' of https://github.com/minos-framework/minos-python into 0.6.0
2 parents 7816ab3 + 05c0979 commit 0b6f104

File tree

84 files changed

+3611
-3090
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

84 files changed

+3611
-3090
lines changed

README.md

Lines changed: 97 additions & 118 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<p align="center">
2-
<a href="http://minos.run" target="_blank"><img src="https://raw.githubusercontent.com/minos-framework/.github/main/images/logo.png" alt="Minos logo"></a>
2+
<a href="https://minos.run" target="_blank"><img src="https://raw.githubusercontent.com/minos-framework/.github/main/images/logo.png" alt="Minos logo"></a>
33
</p>
44

55
# minos-python: The framework which helps you create reactive microservices in Python
@@ -16,18 +16,9 @@
1616

1717
Minos is a framework which helps you create [reactive](https://www.reactivemanifesto.org/) microservices in Python. Internally, it leverages Event Sourcing, CQRS and a message driven architecture to fulfil the commitments of an asynchronous environment.
1818

19-
### Roadmap
19+
## Roadmap
2020

21-
#### 0.6.x
22-
23-
* [#78](https://github.com/minos-framework/minos-python/issues/78) Implement a circuit breaker for `minos-broker-kafka`.
24-
* [#87](https://github.com/minos-framework/minos-python/issues/87) Implement idempotency for `BrokerSubscriber` message processing.
25-
* [#100](https://github.com/minos-framework/minos-python/issues/100) Create the `minos-serializers-avro` plugin.
26-
* [#148](https://github.com/minos-framework/minos-python/issues/148) Create the `minos-http-aiohttp`.
27-
* [#149](https://github.com/minos-framework/minos-python/issues/149) Add `minos-graphql-aiohttp` plugin.
28-
* [#150](https://github.com/minos-framework/minos-python/issues/150) Refactor configuration file and `MinosConfig` accessor.
29-
* [#151](https://github.com/minos-framework/minos-python/issues/151) Expose `OpenAPI` and `AsyncAPI` specifications.
30-
* [#152](https://github.com/minos-framework/minos-python/issues/152) Provide a testing suite to test the microservice.
21+
The roadmap of this project is publicly accessible at this [GitHub Repository](https://github.com/minos-framework/roadmap).
3122

3223
## Foundational Patterns
3324

@@ -70,7 +61,7 @@ For more information, visit the [`minos-cli`](https://github.com/minos-framework
7061

7162
## Documentation
7263

73-
The best place to start learning how to use the Minos Framework is at [Minos Learn](http://www.minos.run/learn/). The official API Reference is publicly available at the [GitHub Pages](https://minos-framework.github.io/minos-python).
64+
The best place to start learning how to use the Minos Framework is at [Minos Learn](https://www.minos.run/learn/). The official API Reference is publicly available at the [GitHub Pages](https://minos-framework.github.io/minos-python).
7465

7566
## QuickStart
7667

@@ -143,7 +134,8 @@ pip install \
143134
minos-microservice-cqrs \
144135
minos-microservice-networks \
145136
minos-microservice-saga \
146-
minos-broker-kafka
137+
minos-broker-kafka \
138+
minos-http-aiohttp
147139
```
148140

149141
### Configure a Microservice
@@ -166,65 +158,58 @@ Create a `foo/config.yml` file and add the following lines:
166158
```yaml
167159
# foo/config.yml
168160

169-
service:
170-
name: foo
171-
aggregate: main.Foo
172-
injections:
173-
lock_pool: minos.common.PostgreSqlLockPool
174-
postgresql_pool: minos.common.PostgreSqlPool
175-
broker_publisher: minos.plugins.kafka.PostgreSqlQueuedKafkaBrokerPublisher
176-
broker_subscriber_builder: minos.plugins.kafka.PostgreSqlQueuedKafkaBrokerSubscriberBuilder
177-
broker_pool: minos.networks.BrokerClientPool
178-
transaction_repository: minos.aggregate.PostgreSqlTransactionRepository
179-
event_repository: minos.aggregate.PostgreSqlEventRepository
180-
snapshot_repository: minos.aggregate.PostgreSqlSnapshotRepository
181-
saga_manager: minos.saga.SagaManager
182-
discovery: minos.networks.DiscoveryConnector
183-
services:
184-
- minos.networks.BrokerHandlerService
185-
- minos.networks.RestService
186-
- minos.networks.PeriodicTaskSchedulerService
161+
version: 2
162+
name: foo
163+
aggregate:
164+
entities:
165+
- main.Foo
166+
repositories:
167+
transaction: minos.aggregate.PostgreSqlTransactionRepository
168+
event: minos.aggregate.PostgreSqlEventRepository
169+
snapshot: minos.aggregate.PostgreSqlSnapshotRepository
170+
databases:
171+
default:
172+
database: foo_db
173+
user: minos
174+
password: min0s
175+
saga:
176+
path: "./foo.lmdb"
177+
interfaces:
178+
broker:
179+
port: minos.networks.BrokerPort
180+
publisher:
181+
client: minos.plugins.kafka.KafkaBrokerPublisher
182+
queue: minos.networks.PostgreSqlBrokerPublisherQueue
183+
subscriber:
184+
client: minos.plugins.kafka.KafkaBrokerSubscriber
185+
queue: minos.networks.PostgreSqlBrokerSubscriberQueue
186+
validator: minos.networks.PostgreSqlBrokerSubscriberDuplicateValidator
187+
http:
188+
port: minos.networks.HttpPort
189+
connector:
190+
client: minos.plugins.aiohttp.AioHttpConnector
191+
port: 4545
192+
periodic:
193+
port: minos.networks.PeriodicPort
194+
pools:
195+
lock: minos.common.PostgreSqlLockPool
196+
databasse: minos.common.PostgreSqlPool
197+
broker: minos.networks.BrokerClientPool
198+
saga:
199+
manager: minos.saga.SagaManager
200+
routers:
201+
- minos.networks.BrokerRouter
202+
- minos.networks.PeriodicRouter
203+
- minos.networks.RestHttpRouter
187204
middleware:
188205
- minos.saga.transactional_command
189206
services:
207+
- minos.networks.SystemService
190208
- minos.aggregate.TransactionService
191209
- minos.aggregate.SnapshotService
192210
- minos.saga.SagaService
193211
- main.FooCommandService
194212
- main.FooQueryService
195-
rest:
196-
host: 0.0.0.0
197-
port: 4545
198-
broker:
199-
host: localhost
200-
port: 9092
201-
queue:
202-
database: foo_db
203-
user: user
204-
password: pass
205-
host: localhost
206-
port: 5432
207-
records: 1000
208-
retry: 2
209-
repository:
210-
database: foo_db
211-
user: user
212-
password: pass
213-
host: localhost
214-
port: 5432
215-
snapshot:
216-
database: foo_db
217-
user: user
218-
password: pass
219-
host: localhost
220-
port: 5432
221-
saga:
222-
storage:
223-
path: "./foo.lmdb"
224-
discovery:
225-
client: minos.networks.InMemoryDiscoveryClient
226-
host: localhost
227-
port: 5567
228213
```
229214
230215
</details>
@@ -989,64 +974,57 @@ Here is the `foobar/config.yml` config file:
989974
```yaml
990975
# foobar/config.yml
991976

992-
service:
993-
name: foobar
994-
aggregate: main.FooBar
995-
injections:
996-
lock_pool: minos.common.PostgreSqlLockPool
997-
postgresql_pool: minos.common.PostgreSqlPool
998-
broker_publisher: minos.plugins.kafka.PostgreSqlQueuedKafkaBrokerPublisher
999-
broker_subscriber_builder: minos.plugins.kafka.PostgreSqlQueuedKafkaBrokerSubscriberBuilder
1000-
broker_pool: minos.networks.BrokerClientPool
1001-
transaction_repository: minos.aggregate.PostgreSqlTransactionRepository
1002-
event_repository: minos.aggregate.PostgreSqlEventRepository
1003-
snapshot_repository: minos.aggregate.PostgreSqlSnapshotRepository
1004-
saga_manager: minos.saga.SagaManager
1005-
discovery: minos.networks.DiscoveryConnector
1006-
services:
1007-
- minos.networks.BrokerHandlerService
1008-
- minos.networks.RestService
1009-
- minos.networks.PeriodicTaskSchedulerService
977+
version: 2
978+
name: foobar
979+
aggregate:
980+
entities:
981+
- main.FooBar
982+
repositories:
983+
transaction: minos.aggregate.PostgreSqlTransactionRepository
984+
event: minos.aggregate.PostgreSqlEventRepository
985+
snapshot: minos.aggregate.PostgreSqlSnapshotRepository
986+
databases:
987+
default:
988+
database: foobar_db
989+
user: minos
990+
password: min0s
991+
saga:
992+
path: "./foobar.lmdb"
993+
interfaces:
994+
broker:
995+
port: minos.networks.BrokerPort
996+
publisher:
997+
client: minos.plugins.kafka.KafkaBrokerPublisher
998+
queue: minos.networks.PostgreSqlBrokerPublisherQueue
999+
subscriber:
1000+
client: minos.plugins.kafka.KafkaBrokerSubscriber
1001+
queue: minos.networks.PostgreSqlBrokerSubscriberQueue
1002+
validator: minos.networks.PostgreSqlBrokerSubscriberDuplicateValidator
1003+
http:
1004+
port: minos.networks.HttpPort
1005+
connector:
1006+
client: minos.plugins.aiohttp.AioHttpConnector
1007+
port: 4546
1008+
periodic:
1009+
port: minos.networks.PeriodicPort
1010+
pools:
1011+
lock: minos.common.PostgreSqlLockPool
1012+
databasse: minos.common.PostgreSqlPool
1013+
broker: minos.networks.BrokerClientPool
1014+
saga:
1015+
manager: minos.saga.SagaManager
1016+
routers:
1017+
- minos.networks.BrokerRouter
1018+
- minos.networks.PeriodicRouter
1019+
- minos.networks.RestHttpRouter
10101020
middleware:
10111021
- minos.saga.transactional_command
10121022
services:
1023+
- minos.networks.SystemService
10131024
- minos.aggregate.TransactionService
10141025
- minos.aggregate.SnapshotService
10151026
- minos.saga.SagaService
10161027
- main.FooBarCommandService
1017-
rest:
1018-
host: 0.0.0.0
1019-
port: 4546
1020-
broker:
1021-
host: localhost
1022-
port: 9092
1023-
queue:
1024-
database: foobar_db
1025-
user: user
1026-
password: pass
1027-
host: localhost
1028-
port: 5432
1029-
records: 1000
1030-
retry: 2
1031-
repository:
1032-
database: foobar_db
1033-
user: user
1034-
password: pass
1035-
host: localhost
1036-
port: 5432
1037-
snapshot:
1038-
database: foobar_db
1039-
user: user
1040-
password: pass
1041-
host: localhost
1042-
port: 5432
1043-
saga:
1044-
storage:
1045-
path: "./foobar.lmdb"
1046-
discovery:
1047-
client: minos.networks.InMemoryDiscoveryClient
1048-
host: localhost
1049-
port: 5567
10501028
```
10511029
10521030
</details>
@@ -1155,21 +1133,22 @@ The core packages provide the base implementation of the framework.
11551133
The plugin packages provide connectors to external technologies like brokers, discovery services, databases, serializers and so on.
11561134
11571135
* [minos-broker-kafka](https://minos-framework.github.io/minos-python/packages/plugins/minos-broker-kafka): The `kafka` plugin package.
1136+
* [minos-broker-rabbitmq](https://minos-framework.github.io/minos-python/packages/plugins/minos-broker-rabbitmq): The `rabbitmq` plugin package.
11581137
* [minos-discovery-minos](https://minos-framework.github.io/minos-python/packages/plugins/minos-discovery-minos): The `minos-discovery` plugin package.
11591138
* [minos-http-aiohttp](https://minos-framework.github.io/minos-python/packages/plugins/minos-http-aiohttp): The `aiohttp` plugin package.
11601139
* [minos-router-graphql](https://minos-framework.github.io/minos-python/packages/plugins/minos-router-graphql): The `grapqhl` plugin package.
11611140
11621141
## Source Code
11631142
1164-
The source code of this project is hosted at the [GitHub Repository](https://github.com/minos-framework/minos-python).
1143+
The source code of this project is hosted at this [GitHub Repository](https://github.com/minos-framework/minos-python).
11651144
11661145
## Getting Help
11671146
11681147
For usage questions, the best place to go to is [StackOverflow](https://stackoverflow.com/questions/tagged/minos).
11691148
11701149
## Discussion and Development
11711150
1172-
Most development discussions take place over the [GitHub Issues](https://github.com/minos-framework/minos-python/issues). In addition, a [Gitter channel](https://gitter.im/minos-framework/community) is available for development-related questions.
1151+
Most development discussions take place over this [GitHub Issues](https://github.com/minos-framework/minos-python/issues). In addition, a [Gitter channel](https://gitter.im/minos-framework/community) is available for development-related questions.
11731152
11741153
## How to contribute
11751154

packages/core/minos-microservice-aggregate/HISTORY.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,3 +93,9 @@
9393
* Add `RefResolver.build_topic_name` static method.
9494
* Remove `SnapshotService.__get_one__` method.
9595
* Minor changes.
96+
97+
0.6.0 (2022-03-28)
98+
------------------
99+
100+
* Replace `dependency-injector`'s injection classes by the ones provided by the `minos.common.injections` module.
101+
* Be compatible with latest `minos.common.Config` API.

packages/core/minos-microservice-aggregate/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<p align="center">
2-
<a href="http://minos.run" target="_blank"><img src="https://raw.githubusercontent.com/minos-framework/.github/main/images/logo.png" alt="Minos logo"></a>
2+
<a href="https://minos.run" target="_blank"><img src="https://raw.githubusercontent.com/minos-framework/.github/main/images/logo.png" alt="Minos logo"></a>
33
</p>
44

55
## minos-microservice-aggregate

packages/core/minos-microservice-aggregate/minos/aggregate/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
__author__ = "Minos Framework Devs"
22
__email__ = "[email protected]"
3-
__version__ = "0.5.4"
3+
__version__ = "0.6.0"
44

55
from .actions import (
66
Action,

0 commit comments

Comments
 (0)