Current section
Files
Jump to
Current section
Files
src/glats@jetstream.erl
-module(glats@jetstream).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([ack/2, term/2, nack/2, nack_delay/3]).
-export_type([jetstream_error/0, storage_type/0]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
-type jetstream_error() :: {jetstream_not_enabled_for_account, binary()} |
{jetstream_not_enabled, binary()} |
{insufficient_resources, binary()} |
{invalid_stream_config, binary()} |
{stream_name_in_subject_does_not_match, binary()} |
{stream_name_in_use, binary()} |
{stream_not_found, binary()} |
{stream_purge_not_allowed, binary()} |
{no_message_found, binary()} |
{consumer_not_found, binary()} |
{consumer_name_exists, binary()} |
{consumer_already_exists, binary()} |
{wrong_last_sequence, binary()} |
{bad_request, binary()} |
{unknown, integer(), binary()} |
{decode_error, binary()} |
timeout |
no_responders |
{pull_consumer_required, binary()}.
-type storage_type() :: file_storage | memory_storage.
-file("src/glats/jetstream.gleam", 51).
?DOC(" Sends an acknowledgement for a message.\n").
-spec ack(
gleam@erlang@process:subject(glats:connection_message()),
glats:message()
) -> {ok, nil} | {error, glats:error()}.
ack(Conn, Message) ->
glats:respond(Conn, Message, <<""/utf8>>, []).
-file("src/glats/jetstream.gleam", 60).
?DOC(
" Sends a term acknowledgement for a message.\n"
"\n"
" Instructs the server to stop redelivery of a message without acknowledging\n"
" it as successfully processed.\n"
).
-spec term(
gleam@erlang@process:subject(glats:connection_message()),
glats:message()
) -> {ok, nil} | {error, glats:error()}.
term(Conn, Message) ->
glats:respond(Conn, Message, <<"+TERM"/utf8>>, []).
-file("src/glats/jetstream.gleam", 68).
?DOC(
" Sends a negative acknowledgement for a message.\n"
"\n"
" Delivery will be retried until ack'd or term'd.\n"
).
-spec nack(
gleam@erlang@process:subject(glats:connection_message()),
glats:message()
) -> {ok, nil} | {error, glats:error()}.
nack(Conn, Message) ->
glats:respond(Conn, Message, <<"-NAK"/utf8>>, []).
-file("src/glats/jetstream.gleam", 75).
?DOC(
" Sends a negative acknowledgement for a message and delays\n"
" redelivery of the message. The unit is in nanoseconds.\n"
).
-spec nack_delay(
gleam@erlang@process:subject(glats:connection_message()),
glats:message(),
integer()
) -> {ok, nil} | {error, glats:error()}.
nack_delay(Conn, Message, Delay) ->
glats:respond(
Conn,
Message,
<<<<"-NAK {\"delay\":"/utf8, (erlang:integer_to_binary(Delay))/binary>>/binary,
"}"/utf8>>,
[]
).