asp.net web api

我是微软服务新手,对RabbitMQ / EasyNetQ有疑问。 我从一个微服务向另一个微服务发送消息。

每个微服务都是Web API的。 我正在使用CQRS,其中我的命令处理程序将使用队列中的消息并执行一些业务逻辑。 为了调用处理程序,它需要向API方法发出请求。

我想知道,而不必显式调用API端点来消费消息的代码。 有没有自动的方式来做到这一点,而无需调用API端点?

建议可能会创建一个单独的解决方案,这将是一个控制台应用程序,将执行RabbitMQ以开始收听。 创建一个while循环来读取消息,然后每次将新消息发送到队列时调用web api端点来处理业务逻辑。

我的目标是创建一个监听器或启动任务,一旦消息在队列中,它将自动从队列中选取它并继续执行命令处理程序,但不知道如何按照我描述的方式执行“自动”方式。 我正在考虑使用将持续运行的Azure Webjob,它将充当消费者。
寻找一个好的建筑方式来做到这一点。

正在使用的编程语言是C#

非常感激


托管RabbitMQ用户的推荐方式是使用类似topshelf库的方式编写Windows服务,并在其服务开始时订阅该服务中的总线事件。 我们在多个项目中都没有问题。

如果您使用的是Azure,托管RabbitMQ订户的最佳位置是“工作者角色”。


我认为使用CQRS模式,你将有事件以及相应的事件处理程序。 由于您正在使用RabbitMQ进行命令和查询之间的异步通信,因此任何放置在RabbitMQ上的特定通道上的消息都可以通过回调方法进行监听

从队列接收消息更为复杂。 它通过向队列订阅回调函数来工作。 每当我们收到一条消息,这个回调函数就被皮卡库调用。


我正在使用CQRS,其中我的命令处理程序将使用队列中的消息并执行一些业务逻辑。 为了调用处理程序,它需要向API方法发出请求。

你确定这是真正的CQRS吗? 当您在域逻辑中处理查询和命令时,CQRS会发生。 通过calss接收消息,这就是所谓的CommandHandler,只是对它做出反应还不是CQRS。

我的目标是创建一个监听器或启动任务,一旦消息在队列中,它将自动从队列中选取它并继续执行命令处理程序,但不知道如何按照我描述的方式执行“自动”方式。 我正在考虑使用将持续运行的Azure Webjob,它将充当消费者。 寻找一个好的建筑方式来做到这一点。

你做得越容易越好。 在尝试所有简单的解决方案之前,不要去寻找复杂的解决方案。 当我实现类似的东西时,我只是使用Linux cron运行一组消息处理程序脚本。 处理程序从队列中取消消息,处理消息并终止。 简单。

链接地址: http://www.djcxy.com/p/34219.html

上一篇: asp.net web api

下一篇: best practice