anycable-core 1.3.1 → 1.4.0.rc.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5eaf888f4c9312a81bbadf980e5279efa1a0403760569b0465a537e6bd2ed291
4
- data.tar.gz: 85206aa6fb8aac5faa0641c889deb9f4c61d40a27211feffb20ab23590313469
3
+ metadata.gz: 694b7faf93867160692c90662d8fd65af0e5f7303688ae1fe387b3bae534bb00
4
+ data.tar.gz: 92f687a99d704322486551e9d29d82e97a2f15e63c3e8e0a2c592e5ebc58cae2
5
5
  SHA512:
6
- metadata.gz: 8eb1685bd731c6904126e0ea75a5f4489f268e97f080df60a6eec9ce3ae79cf7c3477ff5cf4add6541a7b09c21455c1d97ababcc1ad818f119e79ac6faf97e56
7
- data.tar.gz: 9d5c9882b1eb73901e253f64915c3647c38453357560d9ec836a29163aa3b6f24a10b485b1007751e3600f81a4e4a9cb8eb0a37204af35d87cc216934b7530c2
6
+ metadata.gz: aea5bfe49b5d0d0a818536cde34cc9620eb8b39bf07b526a81b62e3dad45a304f00127c1158f741487efe309004b5ae13fdade338533416c7cbbfe0b275f4fda
7
+ data.tar.gz: 408901c32e70e72d3b69f183dea2475c3b8b0a02b7c355a453f0d46d4d698cb9b2b772d106ddfa3f6f50aa1f6f367f48f6e8987c4df1c3c6abc2670d104561e9
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
@@ -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/5"),
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
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AnyCable
4
- VERSION = "1.3.1"
4
+ VERSION = "1.4.0.rc.1"
5
5
  end
@@ -0,0 +1,6 @@
1
+ module AnyCable
2
+ module BroadcastAdapters
3
+ class Redisx < Redis
4
+ end
5
+ end
6
+ end
data/sig/manifest.yml ADDED
@@ -0,0 +1,6 @@
1
+ dependencies:
2
+ - name: logger
3
+ - name: openssl
4
+ - name: optparse
5
+ - name: json
6
+ - name: pathname
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.3.1
4
+ version: 1.4.0.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-05-12 00:00:00.000000000 Z
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: '0'
285
+ version: 1.3.1
283
286
  requirements: []
284
287
  rubygems_version: 3.4.8
285
288
  signing_key: