对于我的新项目,每个组件都将部署在Azure中。我有一个使用RabbitMQ处理事件的第三方应用程序,我想订阅这些事件并处理它们以将数据存储在我自己的数据库中的事件中。
最好的方法是什么?使用webjobs并为RabbitMQ编写自己的自定义触发器/活页夹?
感谢您提前获得建议
答案 0 :(得分:2)
根据您的要求,我认为Azure WebJob是实现目标的理想方法。在这种情况下,您可以使用WebJob作为使用者客户端来订阅事件并处理数据。请尝试创建WebJob并按照Mitra提供的链接订阅事件并在WebJob中实现您的逻辑过程。
请注意,WebJob在Azure Web App的上下文中作为后台进程运行。为了使您的WebJob持续运行,您需要以标准模式或高度运行并启用“始终开启”设置。
考虑扩展,您可以使用Azure网站扩展功能来扩展额外的WebJobs实例。对于缩放,您可以参考此tutorial。
答案 1 :(得分:1)
对于基于订阅的路由,您可以使用Rabbitmq中的主题。使用主题可以将事件推送到特定队列,然后这些队列中的使用者可以进行处理以将数据写入数据库。唯一要注意的是为每个队列准备一个正确的路由密钥。
这样你就可以拥有基于订阅的机制。这种方法的唯一方法是每个事件都有一个队列。
每个事件拥有一个队列的好处是可以轻松跟踪事件并轻松调试。
如果事件数量非常大,那么您只能拥有一个队列,但在使用该消息后,您必须触发该事件。
以下是参考链接: https://www.rabbitmq.com/tutorials/tutorial-five-python.html