c# - SQL Service Broker 与自定义队列

标签 c# asp.net sql-server

我正在创建一个群发邮件应用程序,其中一个 Web 应用程序设置一个电子邮件模板,然后将一堆电子邮件地址排队等待发送。另一端将是一个 Windows 服务(或 exe),它将轮询该队列,挑选要发送的消息。

我的问题是,与仅创建我自己的自定义队列表相比,使用 SQL Service Broker(或 MSMQ)有什么优势?

我正在阅读的所有内容都在建议我使用 Service Broker,但我真的看不出与平面表格相比有什么巨大优势(对我来说使用它会简单得多)。作为引用,该应用程序几乎每天用于发送 50,000-100,000 封电子邮件。

最佳答案

知道如何在平面表上实现队列吗?这不是一个愚蠢的问题,正确地在表上实现队列比听起来要难得多。众所周知,类似队列的表很容易死锁,您需要仔细考虑表设计以及入队和出队操作。另外,你知道如何扩展你的 table 池吗?您将如何处理重试和超时(即 timers 的用途)?

我并不是说您应该使用 SSB。学习曲线非常陡峭,主要是分布式应用程序平台,而不是本地队列产品,因此某些功能(如对话)实际上对您来说是障碍而不是优势。我只是说你还必须考虑平面队列的困难。如果您从未实现过平板队列,那么请注意,那座桥下有很多龙。

天 50k-100k 条消息算不了什么,每秒只有一条消息。如果您想每 分钟 100k,那么我们有话要说。

关于c# - SQL Service Broker 与自定义队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1470772/

相关文章:

sql-server - 防止从 SSMS 导出的文件中的行受到影响

SQL 服务器 : concatenate values and ignore null or blank values

c# - appname.exe.config 未在 Windows 应用程序上创建

c# - 是否可以在 C# 中使用作为关键字的值定义枚举?

c# - 使用 Linq to SQL 基于自定义 .NET 属性进行分页和排序

c# - 如何在一条线上做到这一点?

c# - 我如何在运行时在 asp.net 中添加新面板

.net - 什么是 ASP.NET 应用程序服务器?

asp.net - 母版页是要走的路吗?

c# - Linq to SQL 可空整数?