Queue(fila) - uma estrutura de dados no disco ou na RAM que armazena links para mensagens e fornece suas cópias consumers(para consumidores). QueueÉ um processo Erlang com um estado (onde as próprias mensagens podem ser armazenadas em cache). 1.000 filas podem ocupar cerca de 80Mb.
Binding (ligação) - uma regra que informa ao trocador qual das filas deve receber mensagens.
ĂŤndice
Filas temporárias
Se a fila for criada com o conjunto de parâmetros autoDelete, essa fila adquirirá a capacidade de excluir-se automaticamente . Essas filas geralmente sĂŁo criadas quando o primeiro cliente se conecta e sĂŁo excluĂdas quando todos os clientes se desconectam.
exclusive, . , /, . exclusive , autoDelete .
:
durable, /. Queue.Delete.
Highly Available
HA RabbitMQ. , , .
- HA , , HA . - , .
HA .

:
- HA . HA HA RabbitMQ (2-3 )
RPC . Queue.Declare, :
RabbitMQ.Client:
channel.QueueDeclare(
queue: "my_queue",
durable: false,
exclusive: false,
autoDelete: false,
arguments: null
);
queue — , .durable — true, /exclusive — true,autoDelete — true, arguments — . .
arguments
x-message-ttl(x-message-time-to-live) — . x-message-ttl, , . x-message-ttl . . . x-message-ttl, .x-expires — . . , , Basic.Cancel . , Basic.Get. , . , .x-max-length — . ,

x-max-lenght-bytes — . ( )x-overflow — . : drop-head ( ) reject-publish. drop-head, . reject-publish,x-dead-letter-exchange — exchange, ,x-dead-letter-routing-key —x-max-priority — 255 (RabbitMQ 3.5.0 ). , . ,x-queue-mode — . . . , , ,x-queue-master-locator — ,x-ha-policy — HA . all, . nodes,x-ha-nodes — , HA

, RPC Queue.DeclareOk. ( Queue.Declare), Channel.Close OperationInterruptedException, .
Queue.Declare . , , , .
Queue.Declare , Channel.Close OperationInterruptedException, 403 .
, >= 10 , , GC , , .
Queue
RabbitMQ guest (username: guest password: guest). , guest . Queues Add a new queue. :

Add queues, .

. , consumers, / , .
Binding
RPC . Queue.Bind, :
RabbitMQ.Client:
channel.QueueBind(
queue: queueName,
exchange: "my_exchange",
routingKey: "my_key",
arguments: null
);
queue —exchange —routingKey —arguments —

, RPC Queue.BindOk.
Binding
RabbitMQ guest (username: guest password: guest). , guest . Queues my_queue. bindings:

Bind, :

Code
Nesta seção, descrevemos a fila e a ligação usando o código C #, portanto, se precisarmos desenvolver uma biblioteca. Talvez seja útil para a percepção.
public interface IQueue
{
string Name { get; }
bool IsDurable { get; }
bool IsExclusive { get; }
bool IsAutoDelete { get; }
IDictionary<string, object> Arguments { get; }
}
public class Queue : IQueue
{
public Queue(
string name,
bool isDurable = true,
bool isExclusive = false,
bool isAutoDelete = false,
IDictionary<string, object> arguments = null)
{
Name = name ??
throw new ArgumentNullException(name, $"{name} must not be null");
IsDurable = isDurable;
IsExclusive = isExclusive;
IsAutoDelete = isAutoDelete;
Arguments = arguments ?? new Dictionary<string, object>();
}
public string Name { get; }
public bool IsDurable { get; }
public bool IsExclusive { get; }
public bool IsAutoDelete { get; }
public IDictionary<string, object> Arguments { get; }
}
public static class QueueMode
{
public const string Default = "default";
public const string Lazy = "lazy";
}
public interface IBinding
{
IExchange Exchange { get; }
string RoutingKey { get; }
IDictionary<string, object> Arguments { get; }
}
public class Binding : IBinding
{
public Binding(
IExchange exchange,
string routingKey,
IDictionary<string, object> arguments)
{
Exchange = exchange;
RoutingKey = routingKey;
Arguments = arguments;
}
public IExchange Exchange { get; }
public string RoutingKey { get; }
public IDictionary<string, object> Arguments { get; }
}