Class: JetstreamBridge::PullSubscriptionBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/jetstream_bridge/consumer/pull_subscription_builder.rb

Overview

Builds and shims pull subscriptions without requiring JetStream API permissions.

Instance Method Summary collapse

Constructor Details

#initialize(jts, durable, stream_name, filter_subject) ⇒ PullSubscriptionBuilder

Returns a new instance of PullSubscriptionBuilder.



10
11
12
13
14
15
# File 'lib/jetstream_bridge/consumer/pull_subscription_builder.rb', line 10

def initialize(jts, durable, stream_name, filter_subject)
  @jts = jts
  @durable = durable
  @stream_name = stream_name
  @filter_subject = filter_subject
end

Instance Method Details

#build(nats_client) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/jetstream_bridge/consumer/pull_subscription_builder.rb', line 17

def build(nats_client)
  prefix = @jts.instance_variable_get(:@prefix) || '$JS.API'
  deliver = nats_client.new_inbox
  sub = nats_client.subscribe(deliver)
  sub.instance_variable_set(:@_jsb_nc, nats_client)
  sub.instance_variable_set(:@_jsb_deliver, deliver)
  sub.instance_variable_set(:@_jsb_next_subject, "#{prefix}.CONSUMER.MSG.NEXT.#{@stream_name}.#{@durable}")

  apply_pull_subscription_extensions(sub)
  (sub)

  Logging.info(
    "Created pull subscription without verification for consumer #{@durable} " \
    "(stream=#{@stream_name}, filter=#{@filter_subject})",
    tag: 'JetstreamBridge::Consumer'
  )

  sub
end