Enumeration for describing the type of the producer, with two possible values:
Enumeration for describing the type of the producer, with two possible values:
Enumeration for describing the type of the producer, with two possible values:
Enumeration for describing the type of the producer, with two possible values:
This is often used to optimize the underlying buffer used. The multi-producer option is the safe default and specifies that multiple producers (threads, actors, etc) can push events concurrently, whereas the single-producer option specifies that a single producer can (sequentially) push events and can be used as an (unsafe) optimization.
Multi-producer, multi-consumer
Single-producer, single-consumer
Multi-consumer channel side, meaning that multiple actors can pull data from the channel, from multiple threads, concurrently.
Multi-producer channel side, meaning that multiple actors can push messages from multiple threads, concurrently.
Single-producer, multi-consumer
Single-producer, single-consumer
Single-consumer channel side, meaning that a single actor can pull data from the channel.
Single-consumer channel side, meaning that a single actor can pull data from the channel.
It can do so from multiple threads, but not concurrently, so it needs clear happens-before relationships between subsequent pull operations.
WARNING: This is often selected as an optimization. Use with care and prefer MultiConsumer when in doubt.
Single-producer channel side, meaning that only a single actor can push messages on the channel.
Single-producer channel side, meaning that only a single actor can push messages on the channel.
It can do so from multiple threads, but not concurrently, so it needs clear happens-before relationships between subsequent push operations.
WARNING: This is often selected as an optimization. Use with care and prefer MultiProducer when in doubt.
Converts a string value into a ChannelType.
Given a ProducerSide value and a ConsumerSide value, assemble a ChannelType value out of them.