Abstraction of Message Queues for DotNet
The Obvs project supports multiple message queue systems and appears to be really well designed and flexible.
Transports: ActiveMQ / RabbitMQ / NetMQ / AzureServiceBus / Kafka / EventStore Serialization: XML / JSON.Net / NetJson / ProtoBuf / MsgPack
MassTransit
https://masstransit-project.com/usage/transports/
MassTransit support multiple transports, including:
RabbitMQ
Azure Service Bus
ActiveMQ
Amazon SQS
In Memory
http://docs.masstransit-project.com/en/latest/installation/prerequisites.html
Transports MassTransit leverages existing message transports, so you will need to have a supported transport installed.
In Memory
The in memory transport is included with MassTransit. No additional software is required.
RabbitMQ
To use RabbitMQ, download and install the version appropriate for your operating system. Once the broker is installed, enable some additional plug-ins for management and message tracking.
Then, install the MassTransit.RabbitMQ
package in your project and follow the RabbitMQ configuration guide.
Azure Service Bus
Azure Service Bus is a generic, cloud-based messaging system for connecting just about anything—applications, services, and devices—wherever they are. Connect apps running on Azure, on-premises systems, or both. You can even use Service Bus to connect household appliances, sensors, and other devices like tablets or phones to a central application or to each other.
To use Azure Service Bus with MassTransit, install the MassTransit.AzureServiceBus
package in your project and follow the Service Bus configuration guide.
====================================
NServiceBus
It the below link dies in the future, search for "NServiceBus transports"
https://docs.particular.net/transports/types
NServiceBus transports can be divided into several categories.
Federated transports
Federated transports are inherently distributed. Each endpoint instance may connect to a different node of the queueing technology. Messages are routed transparently between the nodes but the physical routing layer needs to contain information as to which node particular endpoint is connected to.
Federated transports include:
Learning
MSMQ
Broker transports
Broker transports are inherently centralized. Even if there are multiple servers, they act as a single logical instance that hosts all the queues (and/or topics/exchanges).
Broker transports include:
Azure Service Bus
Azure Service Bus (legacy)
Azure Storage Queues
SQL Server
RabbitMQ
Unicast-only transports
Unicast-only transports do not have the notion of topics, exchanges, or similar concepts; only queues. Because of this, they allow only point-to-point communication. Sending a message to multiple receivers (e.g. publishing an event) involves of multiple transport-level sends. Unicast-only transports require subscription storage via NServiceBus persistence.
Unicast-only transports include:
Azure Storage Queues
MSMQ
SQL Server version 4 and below
Amazon SQS version 4 and below
Multicast-enabled transports
Multicast-enabled transports have some notion of topics, exchanges, or similar concepts, which allow sending a message once and having it received by multiple clients. These transports do not require subscription storage.
Multicast-enabled transports include:
Learning
Azure Service Bus
Azure Service Bus (legacy)
RabbitMQ
SQL Server version 5 and above
Amazon SQS version 5 and above
servicestack created a common interface with adapters to RabbitMQ github. You could follow this example to create adapters for other libraries.