mimi-messaging 1.2.7 → 1.2.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/README.md +22 -2
- data/docs/Messaging_Layer_Properties.md +1 -1
- data/docs/Why_HTTP_is_a_bad_choice.md +4 -4
- data/lib/mimi/messaging/version.rb +1 -1
- data/mimi-messaging.gemspec +1 -1
- metadata +5 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 8fa18eabeb0e00848c4eaf7eca202e77cef3526bd6995506ce810f0000dbdc9e
|
4
|
+
data.tar.gz: 34808e22b8405e89de11f0c571ac98004a2be18fa52e3587877e8f9eeb9c0dc0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c88607df18839125d858dea4ca4a076403910ac0f1ced785289dbe990910ff193ca069d16e6a72e67a43119ef983671e2dde3582a1871b9118fca3ac774746b8
|
7
|
+
data.tar.gz: 485b23c110854107a0580f0932a1bd60a1a5d3bf45ae57cf914dd778733a328adf0c642fbcdde1cf2ee2ba5d87b627a5fc97486e1682daef09277d0dbd168fdc
|
data/README.md
CHANGED
@@ -1,7 +1,11 @@
|
|
1
|
-
#
|
1
|
+
# mimi-messaging
|
2
2
|
|
3
3
|
Interservice communication via message bus for microservices.
|
4
4
|
|
5
|
+
## Is it production ready?
|
6
|
+
|
7
|
+
No. Consider this project a WIP.
|
8
|
+
|
5
9
|
## What
|
6
10
|
|
7
11
|
`mimi-messaging` is a Messaging layer -- an interservice
|
@@ -15,6 +19,9 @@ See also: [Overview of Messaging layer properties](docs/Messaging_Layer_Properti
|
|
15
19
|
|
16
20
|
## Why
|
17
21
|
|
22
|
+
When it comes to organizing communications between different microservices of a system,
|
23
|
+
currently there is only two options: to use HTTP or a message bus.
|
24
|
+
|
18
25
|
[Why HTTP is a bad choice for interservice communication?](docs/Why_HTTP_is_a_bad_choice.md)
|
19
26
|
|
20
27
|
TBD: Message bus pro's and con's.
|
@@ -45,10 +52,20 @@ Mimi::Messaging.start
|
|
45
52
|
|
46
53
|
## Usage
|
47
54
|
|
55
|
+
Producing messages:
|
48
56
|
```
|
57
|
+
# COMMAND
|
58
|
+
Mimi::Messaging.command("users/lock", id: "b3cc29c8d2ec68e0")
|
59
|
+
|
60
|
+
# QUERY
|
49
61
|
response = Mimi::Messaging.query("orders/show", id: 123)
|
62
|
+
|
63
|
+
# EVENT
|
50
64
|
```
|
51
65
|
|
66
|
+
See (/examples)[/examples] folder for more examples on how to produce and consume messages.
|
67
|
+
|
68
|
+
|
52
69
|
## Adapters
|
53
70
|
|
54
71
|
`mimi-messaging` is not bound to a specific message broker implementation like RabbitMQ or Kafka. It interacts with a message broker using an adapter interface and
|
@@ -58,7 +75,7 @@ there are several available adapters:
|
|
58
75
|
* RabbitMQ (TBD)
|
59
76
|
* NATS (TBD)
|
60
77
|
* [Amazon SQS/SNS](https://github.com/kukushkin/mimi-messaging-sqs_sns)
|
61
|
-
* in-memory (single process)
|
78
|
+
* (in-memory (single process))[lib/mimi/messaging/adapters/memory.rb]
|
62
79
|
|
63
80
|
## Designing apps
|
64
81
|
|
@@ -71,6 +88,9 @@ There are only two hard problems in distributed systems:
|
|
71
88
|
2. Exactly-once delivery
|
72
89
|
```
|
73
90
|
|
91
|
+
|
92
|
+
[Messaging API specification format](https://github.com/kukushkin/mimi-messaging-spec)
|
93
|
+
|
74
94
|
## License
|
75
95
|
|
76
96
|
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
@@ -95,7 +95,7 @@ For commands and queries, the target of the message consists of a queue name
|
|
95
95
|
and a method name (e.g. `"customers/create"`).
|
96
96
|
|
97
97
|
For events, the target of the message consists of a topic name and an
|
98
|
-
event type (e.g. `"customers
|
98
|
+
event type (e.g. `"customers#created"`).
|
99
99
|
|
100
100
|
This allows to model the communication around your business domain concepts,
|
101
101
|
and not the implementation details like application or host names.
|
@@ -1,6 +1,4 @@
|
|
1
|
-
# Why HTTP is a bad choice for interservice communication
|
2
|
-
|
3
|
-
[WIP]
|
1
|
+
# [WIP] Why HTTP is a bad choice for interservice communication
|
4
2
|
|
5
3
|
Downsides of HTTP:
|
6
4
|
* inherently synchronous
|
@@ -17,4 +15,6 @@ Downsides of HTTP:
|
|
17
15
|
|
18
16
|
Pro's of HTTP:
|
19
17
|
* synchronous communication is simple
|
20
|
-
* HTTP as technology is well known by engineers
|
18
|
+
* HTTP as technology is well known by engineers
|
19
|
+
* more stable and simpler to setup if the services are not closely deployed (e.g. in different datacenters/regions)
|
20
|
+
|
data/mimi-messaging.gemspec
CHANGED
@@ -36,6 +36,6 @@ Gem::Specification.new do |spec|
|
|
36
36
|
|
37
37
|
spec.add_development_dependency "bundler", "~> 2.0"
|
38
38
|
spec.add_development_dependency "pry", "~> 0.12"
|
39
|
-
spec.add_development_dependency "rake", "~>
|
39
|
+
spec.add_development_dependency "rake", "~> 13.0"
|
40
40
|
spec.add_development_dependency "rspec", "~> 3.0"
|
41
41
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mimi-messaging
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Kukushkin
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-02-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mimi-core
|
@@ -58,14 +58,14 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '13.0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
68
|
+
version: '13.0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rspec
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -145,8 +145,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
145
145
|
- !ruby/object:Gem::Version
|
146
146
|
version: '0'
|
147
147
|
requirements: []
|
148
|
-
|
149
|
-
rubygems_version: 2.6.14.4
|
148
|
+
rubygems_version: 3.1.2
|
150
149
|
signing_key:
|
151
150
|
specification_version: 4
|
152
151
|
summary: Interservice communication via message bus for microservices
|