This topic describes the terms that are used in Message Queue for RabbitMQ to help you better understand and use Message Queue for RabbitMQ.
- Alternate Exchange
- Alternate exchanges (AEs) are bound to existing exchanges and are used to receive messages that fail to be routed from existing exchanges to queues.
- Parameters that are used to configure queues. You can use these parameters to specify information such as the time-to-live (TTL) for messages, information about dead-letter exchanges, and dead-letter routing keys.
- Auto Delete
- An attribute of exchanges or queues. If you set this attribute to true for an exchange, the system automatically deletes the exchange after all queues are unbound from the exchange. If you set this attribute to true for a queue, the system automatically deletes the queue after all subscriptions to this queue are canceled.
- A set of routing rules. An exchange determines the queues to which the exchange routes messages based on the binding that is specified. The system binds an exchange to a queue based on the routing rules that are included in the binding.
- Binding Key
- Exchanges use binding keys to determine the queues to which messages need to be routed.
- Multiple channels can be created over each physical Transmission Control Protocol (TCP) connection on a client. Each channel is used to run a session task. For more information, see Connection and channel.
- The physical TCP connection that is established between a producer or consumer and a Message Queue for RabbitMQ broker. For more information, see Connection and channel.
- A message routing agent. A producer sends a message to an exchange, and then the exchange routes the message to one or more queues based on the attributes and the content of the message. For more information, see Exchanges.
- An attribute of exchanges. An internal exchange can be bind to another exchange.
- Message ID
- The ID of a message. Message ID is an optional property of a message. A message ID is a short string. In most scenarios, a message ID is used as a unique identifier of a message. You can track and identify messages in scenarios such as sales orders and ticket related scenarios based on message IDs. In these cases, you must specify a unique ID for each message. Message Queue for RabbitMQ servers do not ensure the idempotence of message consumption. Consumption idempotence means that if a message is sent to a consumer multiple times, the result of multiple consumption operations is the same as the result of one message consumption operation, and the repeated consumption operations do not affect the business application in a negative manner. To ensure the idempotence of message consumption, you must specify a unique identifier for each message and configure your Message Queue for RabbitMQ consumers to implement idempotent consumption. For more information, see Message idempotence.
- Message queues are used to store messages. Each message can be routed to one or more queues.
- Routing Key
- When a producer sends a message to an exchange, the producer specifies a routing key that indicates the routing rules of the message. The routing key takes effect based on the type of the exchange and the binding keys of queues that are bound to the exchange. In most cases, the routing key of a message determines the queues to which the message needs to be routed.
- An instance is an independent Message Queue for RabbitMQ resource entity. An instance contains basic resources, such as virtual host (vhosts), exchanges, and queues.
- instance throttling
- When the transactions per second (TPS) of a Message Queue for RabbitMQ instance exceeds the TPS threshold value that is specified when the Message Queue for RabbitMQ instance is created, throttling is triggered for the instance.
The system performs the following operations after throttling is triggered:
- The Message Queue for RabbitMQ broker returns an error code and an error message.
- The Message Queue for RabbitMQ broker closes the channel of the current request. You can detect exceptions in code and reopen the channel.
For more information, see Best practices for instance throttling.
- A producer is a program that produces and publishes messages.
- dead-letter exchange
- Dead-letter exchanges are used to route dead-letter messages to dead-letter queues based on binding keys, dead-letter routing keys, and header attributes. All common types of exchanges, such as direct exchanges, can be used as dead-letter exchanges. For more information, see Dead-letter exchange.
- dead-letter routing key
- A set of routing rules based on which the system routes dead-letter messages. If you do not specify a dead-letter routing key for a message, the original routing key of the message is used as the default dead-letter routing key.
- dead-letter message
- A message that is sent to a dead-letter exchange. Messages may be sent to a dead-letter
exchange in the following scenarios:
Important Expired messages and messages that are discarded due to limits on queue lengths are not converted dead-letter messages.
- The requeue parameter is set to false, and the consumer uses
basic.nackto send negative acknowledgements for messages.
- The broker attempted to send a message to consumers 16 times, and the message is not consumed. For more information, see Message retry.
- The requeue parameter is set to false, and the consumer uses
- dead-letter queue
- A queue that is bound to a dead-letter exchange. Dead-letter queues are used to store dead-letter messages.
- A virtual host that is used to logically isolate resources, including exchanges, queues, and bindings. An application can run on an independent vhost in a secure manner and is not affected by other applications. An instance can contain multiple vhosts, and a vhost can contain multiple exchanges and queues. To connect a producer or consumer to Message Queue for RabbitMQ, you must specify a vhost for the producer or consumer.
- A program that receives and consumes messages.
- message TTL
- The time to live (TTL) for messages in a queue. If the retention period of a message in the queue exceeds the TTL for messages in the queue, the message expires. You must set the TTL for messages to a non-negative integer. The value of this parameter is in milliseconds. For example, if the TTL for messages in a queue is 1,000 milliseconds, messages can be retained for up to 1 second in the queue. For more information, see Message TTL.
- delayed messages
- A delayed message is not immediately sent to consumers after the Message Queue for RabbitMQ broker receives the message. The broker is configured to send the message to consumers after a specific period of time elapses. For more information, see Delayed messages.
- The durability of queues, exchanges, and bindings. Queues, exchanges, and bindings are retained after the broker restarts.