anycable-core 1.3.1 → 1.4.0.pre.rc.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/lib/anycable/broadcast_adapters/redisx.rb +34 -0
- data/lib/anycable/config.rb +2 -2
- data/lib/anycable/version.rb +1 -1
- data/sig/anycable/broadcast_adapters/redisx.rbs +6 -0
- data/sig/manifest.yml +6 -0
- metadata +7 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4ffabf719d153bb5390a13125389bf92b8d11a1b0a0f500774a95f50fd3cee14
|
4
|
+
data.tar.gz: 9db169beafb99939716eca55267c0b1df57fd1a91dd6f98edc156070b5809b6f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bbfa0d23d3fcd4d395b66845169f286edf5c087303581c83f5163d647b8e5955fb3902139592e2ad15a469a00d619c99e70d3213195e1a52d08cb52c528a1520
|
7
|
+
data.tar.gz: dd417c36b177f39aa2c8ac0ce72d0f5fe56197dfa3432d8242f074733c3d6fe8fd4085334c39df14f5afb71937acab1e12d96b5dbf2105a45177698d795d0f4b
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,12 @@
|
|
2
2
|
|
3
3
|
## master
|
4
4
|
|
5
|
+
## 1.4.0-rc.1 (2023-06-01)
|
6
|
+
|
7
|
+
- Add `redisx` broadcast adapter. ([@palkan][])
|
8
|
+
|
9
|
+
A next-gen (Broker-compatible) broadcasting adapter using Redis Streams.
|
10
|
+
|
5
11
|
## 1.3.1 (2023-05-12)
|
6
12
|
|
7
13
|
- Fix gRPC health check response for an empty service. ([@palkan][])
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "anycable/broadcast_adapters/redis"
|
4
|
+
|
5
|
+
module AnyCable
|
6
|
+
module BroadcastAdapters
|
7
|
+
# Next-gen Redis adapter for broadcasting over Redis streams.
|
8
|
+
#
|
9
|
+
# Unlike Redis adapter, RedisX adapter delivers each broadcast message only
|
10
|
+
# to a single WS server, which is responsible for re-broadcasting it within the cluster.
|
11
|
+
# It's required for the Broker (hot streams cache) support.
|
12
|
+
#
|
13
|
+
# Example:
|
14
|
+
#
|
15
|
+
# AnyCable.broadcast_adapter = :redisx
|
16
|
+
#
|
17
|
+
# It uses Redis configuration from global AnyCable config
|
18
|
+
# by default.
|
19
|
+
# NOTE: The `redis_channel` config param is used as a stream name.
|
20
|
+
#
|
21
|
+
# You can override these params:
|
22
|
+
#
|
23
|
+
# AnyCable.broadcast_adapter = :redisx, { url: "redis://my_redis", stream_name: "_any_cable_" }
|
24
|
+
class Redisx < Redis
|
25
|
+
def raw_broadcast(payload)
|
26
|
+
redis_conn.xadd(channel, {payload: payload})
|
27
|
+
end
|
28
|
+
|
29
|
+
def announce!
|
30
|
+
logger.info "Broadcasting Redis stream: #{channel}"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
data/lib/anycable/config.rb
CHANGED
@@ -27,7 +27,7 @@ module AnyCable
|
|
27
27
|
broadcast_adapter: :redis,
|
28
28
|
|
29
29
|
### Redis options
|
30
|
-
redis_url: ENV.fetch("REDIS_URL", "redis://localhost:6379
|
30
|
+
redis_url: ENV.fetch("REDIS_URL", "redis://localhost:6379"),
|
31
31
|
redis_sentinels: nil,
|
32
32
|
redis_channel: "__anycable__",
|
33
33
|
redis_tls_verify: false,
|
@@ -71,7 +71,7 @@ module AnyCable
|
|
71
71
|
flag_options :debug, :nats_dont_randomize_servers
|
72
72
|
ignore_options :nats_options
|
73
73
|
|
74
|
-
def load(*)
|
74
|
+
def load(*_args)
|
75
75
|
super.tap { load_presets }
|
76
76
|
end
|
77
77
|
|
data/lib/anycable/version.rb
CHANGED
data/sig/manifest.yml
ADDED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: anycable-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0.pre.rc.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- palkan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-06-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: anyway_config
|
@@ -201,6 +201,7 @@ files:
|
|
201
201
|
- lib/anycable/broadcast_adapters/http.rb
|
202
202
|
- lib/anycable/broadcast_adapters/nats.rb
|
203
203
|
- lib/anycable/broadcast_adapters/redis.rb
|
204
|
+
- lib/anycable/broadcast_adapters/redisx.rb
|
204
205
|
- lib/anycable/cli.rb
|
205
206
|
- lib/anycable/config.rb
|
206
207
|
- lib/anycable/exceptions_handling.rb
|
@@ -236,6 +237,7 @@ files:
|
|
236
237
|
- sig/anycable/broadcast_adapters/http.rbs
|
237
238
|
- sig/anycable/broadcast_adapters/nats.rbs
|
238
239
|
- sig/anycable/broadcast_adapters/redis.rbs
|
240
|
+
- sig/anycable/broadcast_adapters/redisx.rbs
|
239
241
|
- sig/anycable/cli.rbs
|
240
242
|
- sig/anycable/config.rbs
|
241
243
|
- sig/anycable/exceptions_handling.rbs
|
@@ -256,6 +258,7 @@ files:
|
|
256
258
|
- sig/anycable/rpc/handlers/disconnect.rbs
|
257
259
|
- sig/anycable/socket.rbs
|
258
260
|
- sig/anycable/version.rbs
|
261
|
+
- sig/manifest.yml
|
259
262
|
homepage: http://github.com/anycable/anycable
|
260
263
|
licenses:
|
261
264
|
- MIT
|
@@ -277,9 +280,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
277
280
|
version: 2.7.0
|
278
281
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
279
282
|
requirements:
|
280
|
-
- - "
|
283
|
+
- - ">"
|
281
284
|
- !ruby/object:Gem::Version
|
282
|
-
version:
|
285
|
+
version: 1.3.1
|
283
286
|
requirements: []
|
284
287
|
rubygems_version: 3.4.8
|
285
288
|
signing_key:
|