将100多条消息事务性地发送到Azure服务总线

时间:2015-01-17 20:18:53

标签: c# azure transactionscope servicebus azureservicebus

如何在交易中向Azure Service Bus发送超过100个代理消息?

我知道TransactionScope可以解决问题,但仅限于100条消息。 我知道如果我将消息作为批处理操作发送,则消息的总大小是有限的,这会导致批次在不同批次中被分割,并且不保证事务。我认为,即使批量发送,100条消息的问题仍然存在。

有没有人找到解决方案?

3 个答案:

答案 0 :(得分:1)

好吧,既然您无法使用Service Bus传输所需的所有信息,则必须以其他方式进行传输。

将与交易相关的所有数据存储在另一个位置(Azure存储?),然后发送包含数据文件位置的一条消息 - 该文件包含有关所假设的10,000个操作的信息在一次交易中进行。

您的服务在其交易中将读取数据文件并执行操作。

答案 1 :(得分:0)

尝试将几个"逻辑"一个代理消息中的消息。当您的订户收到代理消息时,它可以一次处理一条逻辑消息。

答案 2 :(得分:0)

当客户端通过TCP协议与Service Bus队列通信时,单个Service Bus队列的最大并发连接数限制为100.此数字在发件人和收件人之间共享。如果达到此配额,则将拒绝后续的其他连接请求,并且调用代码将收到异常。的 This limit is not imposed on clients connecting to the queues using REST-based API.

A client application can access a REST-style service by using the WebHttpRelayBinding or by directly sending HTTP requests to the service endpoint.

Service Bus is a multi-protocol service: you can send and receive messages to or from the service using REST or .NET managed API, mixing and matching clients using different protocols in a given scenario.

如果在单个Service Bus服务命名空间中需要超过10,000个队列,则可以联系Azure支持团队并请求增加。要使用Service Bus扩展超过10,000个队列,您还可以使用Microsoft Azure管理门户创建其他服务命名空间。

Because they offer support for sessions,事务和pub / sub模型,Service Bus队列是更复杂的消息传递方案的首选。但是,Azure队列是支持需要高速和高容量吞吐量的架构的理想选择,以便对其不同组件进行基本解耦。

From a developer’s point of view,Service Bus队列和Azure队列之间的最大区别是使用不同的命名空间以及处理重复或中毒邮件的方式。 Service Bus队列还通过使用ACS提供更灵活的安全机制。高级过滤,延期消息和死信队列等高级方案将在以后的文章中介绍。

enter image description here enter image description here