service_mesh 0.4.1 → 0.4.4
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 +4 -4
- data/README.md +26 -31
- data/lib/service_mesh/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0d1c22ba40201e6531617371be60f030c23976f3a31d06a536114a388c59a9f0
|
|
4
|
+
data.tar.gz: c3e7fd9aedbc639cde6d3727e028799fa51d3222a0006826655084e9f6cb36ea
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d9ebe5643e51f2aebb1ddb7896344b7db28ec0bced10a6cb759db597ffafea1c558dd7612daa9297d4fb4d36c413349c3b085a692770ea0c60742a892d1beffa
|
|
7
|
+
data.tar.gz: a5d57ce5d40a07b3ce478ba55dead8115c62c7f6bb678115e90fce513ef27128e851d33f71dd408d318fae5411a1eb53b086d1b539b867bec225934ed7558071
|
data/README.md
CHANGED
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
# service-mesh-ruby
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
[Service Mesh API Specification](https://github.com/Paymentbox-com/service-mesh-api)
|
|
5
|
-
packaged as the gem `service_mesh`. It holds what every transport and every
|
|
3
|
+
service-mesh-ruby is the Ruby contract for the
|
|
4
|
+
[Service Mesh API Specification](https://github.com/Paymentbox-com/service-mesh-api).
|
|
5
|
+
It is packaged as the gem `service_mesh`. It holds what every transport and every
|
|
6
6
|
caller must agree on, and nothing that moves bytes. Transports are separate
|
|
7
7
|
gems that depend on it and implement `Client` and `Runtime`.
|
|
8
8
|
|
|
9
|
-
The [gRPC Service Mesh API](https://github.com/Paymentbox-com/grpc-service-mesh-api) is a protocol layer that generates code against this contract from protobuf
|
|
10
|
-
definitions, through its Ruby library [grpc-service-mesh-ruby](https://github.com/Paymentbox-com/grpc-service-mesh-ruby). Other protocol layers may be implemented
|
|
11
|
-
to do the same.
|
|
12
|
-
|
|
13
9
|
## Install
|
|
14
10
|
|
|
15
11
|
```ruby
|
|
@@ -21,34 +17,26 @@ Requires Ruby 3.3 or newer. The gem has no runtime dependencies.
|
|
|
21
17
|
|
|
22
18
|
## What it Implements
|
|
23
19
|
|
|
24
|
-
- The value types from the specification: `ServiceMesh::Target`, `ServiceMesh::ServiceMap`,
|
|
25
|
-
`ServiceMesh::Message`, `ServiceMesh::Endpoint
|
|
20
|
+
- The value types from the specification: `ServiceMesh::Target`, `ServiceMesh::ServiceMap`,
|
|
21
|
+
`ServiceMesh::Message`, `ServiceMesh::Endpoint`, and `ServiceMesh::Subscriber`.
|
|
26
22
|
- Target Kinds are implemented as `:route` and `:topic`. A `Target` built with a kind outside the two
|
|
27
23
|
raises `KindMismatch`.
|
|
28
24
|
- `Message#payload` is always `Encoding::BINARY`.
|
|
29
|
-
- `Target#same_channel?` compares segments and kind and ignores metadata.
|
|
25
|
+
- `Target#same_channel?` compares segments and kind and ignores metadata.
|
|
30
26
|
- The configuration keys the specification defines: `DEPLOYMENT_GROUP_KEY`,
|
|
31
27
|
`CONSUMER_GROUP_KEY`, and the value `CONSUMER_GROUP_NONE`.
|
|
32
28
|
- The errors defined by the specification as `ServiceMesh::Error`: `ServiceMesh::KindMismatch`,
|
|
33
|
-
`ServiceMesh::InvalidTarget`, `ServiceMesh::NoDeploymentGroup`.
|
|
29
|
+
`ServiceMesh::InvalidTarget`, and `ServiceMesh::NoDeploymentGroup`.
|
|
34
30
|
- A conformance suite a transport runs against its own `Client` and
|
|
35
31
|
`Runtime`.
|
|
36
32
|
|
|
37
|
-
`Client` and `Runtime` are duck types. The specification names their methods
|
|
38
|
-
a transport satisfies the contract by responding to them and by passing the
|
|
33
|
+
`Client` and `Runtime` are duck types. The specification names their methods,
|
|
34
|
+
and a transport satisfies the contract by responding to them and by passing the
|
|
39
35
|
conformance suite.
|
|
40
36
|
|
|
41
|
-
## Transports
|
|
42
|
-
|
|
43
|
-
- NATS: [service-mesh-nats-ruby](https://github.com/Paymentbox-com/service-mesh-nats-ruby),
|
|
44
|
-
gem `service_mesh_nats`.
|
|
45
|
-
|
|
46
|
-
The Go counterpart of this gem is
|
|
47
|
-
[service-mesh-go](https://github.com/Paymentbox-com/service-mesh-go).
|
|
48
|
-
|
|
49
37
|
## Usage
|
|
50
38
|
|
|
51
|
-
A transport that implements Client and Runtime according to the specification
|
|
39
|
+
A transport that implements `Client` and `Runtime` according to the specification uses the
|
|
52
40
|
types defined here.
|
|
53
41
|
|
|
54
42
|
```ruby
|
|
@@ -84,10 +72,18 @@ RSpec.describe MyTransport do
|
|
|
84
72
|
end
|
|
85
73
|
```
|
|
86
74
|
|
|
87
|
-
The suite covers
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
75
|
+
The suite covers:
|
|
76
|
+
|
|
77
|
+
- kind checks
|
|
78
|
+
- the deployment group requirement
|
|
79
|
+
- request and reply with metadata both ways
|
|
80
|
+
- publish
|
|
81
|
+
- the consumer-group delivery permutations across two runtimes
|
|
82
|
+
- a standalone client refusing requests after close
|
|
83
|
+
- the runtime's client being the one it was given and closed by stop
|
|
84
|
+
- the lifecycle state machine
|
|
85
|
+
- drain completing and expiring
|
|
86
|
+
|
|
91
87
|
Anything that names a transport's own errors, config keys, or address syntax
|
|
92
88
|
stays in the transport's specs.
|
|
93
89
|
|
|
@@ -97,10 +93,9 @@ stays in the transport's specs.
|
|
|
97
93
|
mise install
|
|
98
94
|
just install
|
|
99
95
|
just check # lint, test, build
|
|
96
|
+
just test # tests only
|
|
100
97
|
```
|
|
101
98
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
just test
|
|
106
|
-
```
|
|
99
|
+
Releasing is described in [publishing.md](publishing.md). `just bump patch`,
|
|
100
|
+
`just bump minor`, or `just bump major` raises the version in
|
|
101
|
+
`lib/service_mesh/version.rb` and commits that file.
|
data/lib/service_mesh/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: service_mesh
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.4.
|
|
4
|
+
version: 0.4.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
|
+
- Bryant Morrill
|
|
7
8
|
- Paymentbox
|
|
8
9
|
autorequire:
|
|
9
10
|
bindir: bin
|
|
10
11
|
cert_chain: []
|
|
11
|
-
date: 2026-09-
|
|
12
|
+
date: 2026-09-29 00:00:00.000000000 Z
|
|
12
13
|
dependencies: []
|
|
13
14
|
description:
|
|
14
15
|
email:
|
|
16
|
+
- bryantreadmorrill@gmail.com
|
|
15
17
|
executables: []
|
|
16
18
|
extensions: []
|
|
17
19
|
extra_rdoc_files: []
|