近实时 pub/sub 发送电子邮件和 http 请求的解决方案
Near real-time pub/sub solution sending emails&http requests
我正在尝试构建最佳解决方案,以便在我的 web api 域中发生某些事情时能够发送 email/http 请求。
例如,当某些实体发生变化时,我想向潜在订阅者发送 email/http 通知。
选项如下:
- 在网络中使用 .NET 静态事件 api [不喜欢那个,因为它
不可扩展]
- 使用 MSSQL 数据库保存消息,然后使用一些服务作为 processor/sender [这个扩展但我担心 SQL 服务器和连接性能一旦负载上升]
- 使用 Redis/RabbitMQ/etc 作为队列,然后再次让服务充当 processor/sender...[那些我没有经验]
要求是:
- 应该能够在峰值时间内每秒处理约 100 个 HTTP 请求(每个请求都非常轻量级并且需要很短的时间)
- 应该是可扩展的,所以当我添加新的网络应用程序服务器时,一切正常
- 域事件(实体状态已更改)和 email/http 发送请求之间的延迟应小于 10 秒
- 应该有一个选项可以将消息租给处理器,这样如果处理器延迟失败它可以重试
将不胜感激任何 thoughts/ideas/experiences/points 好的方向。
谢谢!
(更新)
我实际上认为我使用 'subscribers' 这个词是错误的,因为它在这种情况下可能意味着不同的东西。因此,当我说 'potential subscribers' 时,我指的是想要接收电子邮件通知的实际用户,并不是指实际处理队列条目的不同进程(例如,windows 执行实际电子邮件发送的服务)。
所以,在这种情况下,我实际上认为我需要一个发布者(网络 api)和一个订阅者(windows 服务),这让我回想起我可能需要队列而不是主题.
您是否考虑过主题而不是队列?
ActiveMQ:http://activemq.apache.org/how-does-a-queue-compare-to-a-topic.html
通常很容易将队列挂接到主题,这样您就可以为那些不在线的应用程序提供持久队列。
我正在尝试构建最佳解决方案,以便在我的 web api 域中发生某些事情时能够发送 email/http 请求。 例如,当某些实体发生变化时,我想向潜在订阅者发送 email/http 通知。
选项如下:
- 在网络中使用 .NET 静态事件 api [不喜欢那个,因为它 不可扩展]
- 使用 MSSQL 数据库保存消息,然后使用一些服务作为 processor/sender [这个扩展但我担心 SQL 服务器和连接性能一旦负载上升]
- 使用 Redis/RabbitMQ/etc 作为队列,然后再次让服务充当 processor/sender...[那些我没有经验]
要求是:
- 应该能够在峰值时间内每秒处理约 100 个 HTTP 请求(每个请求都非常轻量级并且需要很短的时间)
- 应该是可扩展的,所以当我添加新的网络应用程序服务器时,一切正常
- 域事件(实体状态已更改)和 email/http 发送请求之间的延迟应小于 10 秒
- 应该有一个选项可以将消息租给处理器,这样如果处理器延迟失败它可以重试
将不胜感激任何 thoughts/ideas/experiences/points 好的方向。
谢谢!
(更新) 我实际上认为我使用 'subscribers' 这个词是错误的,因为它在这种情况下可能意味着不同的东西。因此,当我说 'potential subscribers' 时,我指的是想要接收电子邮件通知的实际用户,并不是指实际处理队列条目的不同进程(例如,windows 执行实际电子邮件发送的服务)。
所以,在这种情况下,我实际上认为我需要一个发布者(网络 api)和一个订阅者(windows 服务),这让我回想起我可能需要队列而不是主题.
您是否考虑过主题而不是队列?
ActiveMQ:http://activemq.apache.org/how-does-a-queue-compare-to-a-topic.html
通常很容易将队列挂接到主题,这样您就可以为那些不在线的应用程序提供持久队列。