wabbit v0.4.0 Wabbit.Basic View Source
Functions to publish, consume and acknowledge messages.
Link to this section Summary
Functions
Acknowledges one or more messages
Registers a queue consumer process
Negative acknowledge of one or more messages
Publishes a message to an Exchange
Sets the message prefetch count or size (in bytes)
Rejects (and, optionally, requeues) a message
Link to this section Functions
Acknowledges one or more messages.
If multiple
is set to true
, all messages up to the one specified
by delivery_tag
are considered acknowledged by the server.
Registers a queue consumer process.
The pid
of the process can be set using the subscriber
argument
and defaults to the calling process.
The consumer process will receive the following messages:
{:basic_deliver, payload, meta}
- This is sent for each message consumed, wherepayload
contains the message content andmeta
contains all the metadata set when sending with Basic.publish or additional info set by the broker{:basic_consume_ok, %{consumer_tag: consumer_tag}}
- Sent when the consumer process is registered with Basic.consume. The caller receives the same information as the return of Basic.consume{:basic_cancel, %{consumer_tag: consumer_tag, no_wait: no_wait}}
- Sent by the broker when the consumer is unexpectedly cancelled (such as after a queue deletion){:basic_cancel_ok, %{consumer_tag: consumer_tag}}
- Sent to the consumer process after a call to Basic.cancel
Options
:consumer_tag
- Identifier for the consumer, valid within the current channel:no_local
- If the no-local field is set the server will not send messages to the connection that published them:no_ack
- If this field is set the server does not expect acknowledgements for messages:exclusive
- Request exclusive consumer access, meaning only this consumer can access the queue:no_wait
- If set, the server will not respond to the method:arguments
- A set of arguments for the consume
Negative acknowledge of one or more messages.
If :multiple
is set to true
, all messages up to the one specified
by delivery_tag
are considered as not acknowledged by the
server.
If :requeue
is set to true
, the message will be returned to the
queue and redelivered to the next available consumer. This is a
RabbitMQ specific extension to AMQP 0.9.1. It is equivalent to
reject, but allows rejecting multiple messages using the multiple
option.
Publishes a message to an Exchange.
This method publishes a message to a specific exchange. The message will be routed to queues as defined by the exchange configuration and distributed to any subscribers.
The parameter :exchange
specifies the name of the exchange to
publish to. If set to empty string, it publishes to the default
exchange.
The :routing_key
parameter specifies the routing key for the
message.
The :payload
parameter specifies the message content as a binary.
In addition to the previous parameters, the following options can be used:
Options
:mandatory
- If set, returns an error if the broker can’t route the message to a queue (defaultfalse
):immediate
- If set, returns an error if the broker can’t deliver te message to a consumer immediately (defaultfalse
):content_type
- MIME Content type:content_encoding
- MIME Content encoding:headers
- Message headers. Can be used with headers Exchanges:persistent
- If set, uses persistent delivery mode. Messages marked aspersistent
that are delivered todurable
queues will be logged to disk:correlation_id
- application correlation identifier:priority
- message priority, ranging from 0 to 9:reply_to
- name of the reply queue:expiration
- how long the message is valid (in milliseconds):message_id
- message identifier:timestamp
- timestamp associated with this message (epoch time):type
- message type as a string:user_id
- creating user ID. RabbitMQ will validate this against the active connection user:app_id
- publishing application ID
Examples
iex> Wabbit.Basic.publish channel, "Hello World!", exchange: "my_exchange", routing_key: "my_routing_key", persistent: true
:ok
Sets the message prefetch count or size (in bytes).
If :global
is set to true
this applies to the entire Connection,
otherwise it applies only to the specified Channel.
Options
:prefetch_size
- Number of messages to be sent in advance:prefetch_count
- Specifies a prefetch window in terms of whole messages:global
- QoS settings scope
Rejects (and, optionally, requeues) a message.