The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Myriad::Transport::Memory - In-Memory data layer that mimics Redis behaviour..

SYNOPSIS

  my $transport = Myriad::Transport::Memory->new();

  $transport->publish('channel_name', 'event...');

DESCRIPTION

Exceptions

StreamNotFound

Thrown when the operation requires the stream to be created beforehand but the stream is not currently available.

GroupExists

Thrown when the user is trying to re-create a group but the operation doesn't allow that.

GroupNotFound

Thrown when the operation requires the group to be exist but it's not.

create_stream

Creats an empty stream.

  • stream_name - The name of the stream.

stream_info

Return stream details

  • stream_name - The name of the stream.

add_to_stream

Adds a new item to a stream, if the stream doesn't exist it'll be created.

  • stream_name - The name of the stream.

  • data - A perl hash that contains the user data.

create_consumer_group

Creates a consumer group for a given stream.

  • stream_name - The name of the stream.

  • group_name - The name of the group that is going to be created.

  • offset - If set the group will see this value as the first message in the stream.

  • make_stream - If set and the stream doesn't exist it'll be created.

read_from_stream

Read elements from the stream.

This operation is stateless you can re-read the same message as long as it exists in the stream.

  • stream_name - The name of the stream.

  • offset - The number of messages to skip.

  • count - The limit of messages to be received.

read_from_stream_by_consumer

Read elements from the stream for the given group.

This operation is stateful if the message read by a consumer "A" it won't be available for consumer "B" also consumer "A" won't be able to re-read the message using this call.

This is not exaclty how Redis works but it covers our need at the moment.

  • stream_name - The name of the stream should exist before calling this sub.

  • group_name - The name of the group should exist before callingg this sub.

  • consumer_name - The current consumer name, will be used to keep tracking of pendign messages.

  • offset - If given the consumer can skip the given number of messages.

  • count - The limit of messages to be received.

pending_stream_by_consumer

Read pending elements from the stream for the given group.

This operation will return messages consumed but not yet acknowledged only. It will return items regardless of their consumer.

  • stream_name - The name of the stream should exist before calling this sub.

  • group_name - The name of the group should exist before callingg this sub.

  • consumer_name - The current consumer name, will be used to keep tracking of pendign messages.

  • offset - If given the consumer can skip the given number of messages.

  • count - The limit of messages to be received.

  • stream_name - The name of the stream.

  • group_name - The name of group that has this message as pending.

  • message_id - The Id of the message that we want to acknowledge.

claim_message

Re-assign a message to another consumer.

It'll return the full message.

  • stream_name - The name of the stream.

  • group_name - The name of the group that has the message as pending.

  • consumer_name - The name of the new consumer.

  • message_id - The id of the message to be claimed.

publish

Publish a message, if no consumer exists the message will be lost.

  • channel_name - The name of the channel that the message will be published to.

  • message - A scalar that is going to be published.

subscribe

Subscribe to a channel by optaining a Ryu::Source that'll receive events.

  • channel_name - The name of the channel.

stream_groups_info

Get information about the stream's groups.

exists

Checks if a given key exists or not.

INHERITED METHODS

IO::Async::Notifier

add_child, adopt_future, adopted_futures, can_event, children, configure, configure_unknown, debug_printf, get_loop, invoke_error, invoke_event, loop, make_event_cb, maybe_invoke_event, maybe_make_event_cb, notifier_name, parent, remove_child, remove_from_parent

Object::Pad::UNIVERSAL

BUILDARGS