首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MassTransit -限制在多用户设置中并发处理哪些消息

MassTransit -限制在多用户设置中并发处理哪些消息
EN

Stack Overflow用户
提问于 2017-04-04 12:43:06
回答 1查看 1.2K关注 0票数 0

目前,我有一个窗口服务使用RabbitMQ来处理来自web应用程序的消息异步。此服务使用消息上的实体ID来查找需要处理的实体。当前的消息没有指明应该对实体做什么,因为这已经由内部操作日志提供了。为了帮助移动到多个竞争的消费者设置,我考虑在RabbitMQ上实现RabbitMQ。

我正在研究如何防止具有相同实体ID的多条消息在不同的消费者上同时被处理。在MassTransit中是否有什么东西可以让我处理这种情况,或者是关于如何处理的建议/资源?

我看过最新的过滤器和绿色管道分区过滤器。它们要么不按我的要求执行,要么在我的测试解决方案中配置错误。我还考虑过对实体设置一个锁,以便2nd+并发尝试处理该实体直到第一次完成,但是如果没有,我真的不想捆绑等待的一个或多个消费者。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-04 21:56:18

如果指定密钥提供程序,使其为相同实体返回相同的标识符,则分区程序应该完全满足您的需要。

这个单元测试显示了分区程序是如何设置的:Specs.cs

关键是:

代码语言:javascript
复制
configurator.Consumer(() => new PartitionedConsumer(_completed), x =>
{
    x.Message<PartitionedMessage>(m =>
    {
        m.UsePartitioner(8, context => context.Message.CorrelationId);
    });
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43207591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档