【发布时间】:2010-11-02 23:41:55
【问题描述】:
我正在开发一个应用程序,该应用程序可能会在客户端上以相当紧凑的循环生成数千条消息,然后在服务器上进行处理。事件链类似于:
- 客户端处理项目,放入本地队列。
- 本地队列处理提取消息并调用 Web 服务。
- Web 服务在服务器的服务总线中创建消息。
- 服务总线处理消息到数据库。
这个想法是所有通信都是异步的,因为 Web 服务会有很多客户端。我知道 MSMQ 可以直接执行此操作,但我们并不总是在客户端上拥有那种管理功能来设置安全等内容。
我的问题是关于每个阶段的消息粒度。最简单的方法意味着客户端上处理的每个项目都会生成一个客户端消息/Web 服务调用/服务总线消息。这很好,但我知道如果可能的话,最好将 Web 服务调用进行批处理,除非在大粒度 Web 服务 DTO 与数据库上的短期运行事务之间进行权衡。这种特殊场景不需要“业务事务”,即处理所有或不处理任何项目,我只是希望在消息大小与 Web 服务调用数量与数据库事务之间实现最佳平衡。
有什么建议吗?
【问题讨论】:
标签: c# message-queue servicebus