EasyNetQ by Mike Hadlow, Chris Edwards, A Hazelwood

<PackageReference Include="EasyNetQ" Version="0.15.2.139" />

 RabbitAdvancedBus

public Func<string> GetCorrelationId { get; }

public virtual bool IsConnected { get; }

public IEasyNetQLogger Logger { get; }

public virtual ISerializer Serializer { get; }

public virtual SerializeType SerializeType { get; }

public event Action Connected

public event Action Disconnected

public RabbitAdvancedBus(IConnectionFactory connectionFactory, SerializeType serializeType, ISerializer serializer, IConsumerFactory consumerFactory, IEasyNetQLogger logger, Func<string> getCorrelationId, IMessageValidationStrategy messageValidationStrategy, IClientCommandDispatcherFactory clientCommandDispatcherFactory, IPublisherConfirms publisherConfirms, IEventBus eventBus)

public virtual IBinding Bind(IExchange exchange, IQueue queue, string routingKey)

public virtual IBinding Bind(IExchange source, IExchange destination, string routingKey)

public virtual void BindingDelete(IBinding binding)

public virtual void Consume<T>(IQueue queue, Func<IMessage<T>, MessageReceivedInfo, Task> onMessage)

public virtual void Consume(IQueue queue, Func<byte[], MessageProperties, MessageReceivedInfo, Task> onMessage)

public virtual void Dispose()

public virtual IExchange ExchangeDeclare(string name, string type, bool passive = false, bool durable = true, bool autoDelete = false, bool internal = false)

public virtual void ExchangeDelete(IExchange exchange, bool ifUnused = false)

protected void OnConnected()

protected void OnDisconnected()

public void Publish(IExchange exchange, string routingKey, bool mandatory, bool immediate, MessageProperties messageProperties, byte[] body)

public void Publish<T>(IExchange exchange, string routingKey, bool mandatory, bool immediate, IMessage<T> message)

public virtual Task PublishAsync(IExchange exchange, string routingKey, bool mandatory, bool immediate, MessageProperties messageProperties, byte[] body)

public virtual Task PublishAsync<T>(IExchange exchange, string routingKey, bool mandatory, bool immediate, IMessage<T> message)

public virtual IQueue QueueDeclare(string name, bool passive = false, bool durable = true, bool exclusive = false, bool autoDelete = false, int perQueueTtl = 2147483647, int expires = 2147483647)

public virtual IQueue QueueDeclare()

public virtual void QueueDelete(IQueue queue, bool ifUnused = false, bool ifEmpty = false)

public virtual void QueuePurge(IQueue queue)