NServiceBus开箱即用的支持以下传输:
- MSMQ
- SQL Server
- rabbitmq
- 微软Azure服务总线
- 微软Azure存储队列
NServiceBus端点配置为使用一个特定的运输:
- 设置一个连接字符串,命名
NServiceBus/Transport
在端点的配置文件。 - 安装相关的运输NuGet包。
MSMQ
- NuGet运输包装:不需要,MSMQ开箱即用的支持
- 连接字符串示例:
<connectionStrings>
<!-- MSMQ -->
<add name="NServiceBus/Transport"
connectionString="deadLetter=true;
journal=true;
useTransactionalQueues=true;
cacheSendConnection=true"/>
</connectionStrings>
deadLetter
:deadLetter
配置参数启用或禁用死信队列支持,死信队列跟踪消息不能交付(更多信息:http://msdn.microsoft.com/en-us/library/ms706227.aspx)。默认值是true
;journal
:MSMQ支持日志记录的概念,当日志是活动的每个发送消息的副本存储在《队列(更多信息:http://msdn.microsoft.com/en-us/library/ms702011.aspx)。默认值是false
;useTransactionalQueues
:决定如果生成的队列,或现有的,必须是事务性队列。默认值是true
;cacheSendConnection
:指示底层基础设施缓存连接到远程队列和重用它根据需要而不是每次创建一个新的连接来发送消息。默认值是true
;timeToReachQueue
:期限到达目的地的消息队列,从消息发送的时间。这个设置是只能在v5.1 +;
MSMQ的连接字符串是可选的。
rabbitmq
- NuGet运输包装:NServiceBus.RabbitMQ;
- 连接字符串示例:
<connectionStrings>
<!-- RabbitMQ -->
<add name="NServiceBus/Transport"
connectionString="host=localhost"/>
</connectionStrings>
- 远程主机提供的用户名和密码,因为远程主机默认不接受客人凭证
<connectionStrings>
<!-- RabbitMQ -->
<add name="NServiceBus/Transport"
connectionString="host=myremoteserver;
username=myusername;
password=mypassowrd"/>
</connectionStrings>
- 为集群RabbitMQ
<connectionStrings>
<!-- RabbitMQ -->
<add name="NServiceBus/Transport"
connectionString="host=rabbitNode1,rabbitNode2,rabbitNode3;
username=myuser;
password=password" />
</connectionStrings>
SQL Server
- NuGet运输包装:NServiceBus.SqlServer;
- 连接字符串示例:
<connectionStrings>
<!-- SQL Server -->
<add name="NServiceBus/Transport"
connectionString="Data Source=.SQLEXPRESS;
Initial Catalog=nservicebus;
Integrated Security=True"/>
</connectionStrings>
微软Azure服务总线
- NuGet运输包装:NServiceBus.Azure.Transports.WindowsAzureServiceBus;
- 连接字符串示例:
<connectionStrings>
<!-- Azure ServiceBus -->
<add name="NServiceBus/Transport"
connectionString="Endpoint=sb://[namespace].servicebus.windows.net;
SharedSecretIssuer=owner;
SharedSecretValue=someSecret"/>
</connectionStrings>
微软Azure存储队列
- NuGet运输包装:NServiceBus.Azure.Transports.WindowsAzureStorageQueues;
- 连接字符串示例:
<connectionStrings>
<!-- Azure Storage Queues -->
<add name="NServiceBus/Transport"
connectionString="DefaultEndpointsProtocol=https;
AccountName=myAccount;
AccountKey=myKey;"/>
</connectionStrings>