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