C# 如何同步存储在数据库中但由多个服务处理的消息
我想知道如何创建自己的SOA风格的消息传递系统,类似于JMS Java消息传递系统 面向MOM消息传递的中间件需要将消息存储在单个数据库中,但可能由多个服务处理,以实现可扩展性和故障切换 我定义了一个基本消息表,如下所示: MessageId int 创建时间戳日期时间 交付时间戳日期时间 有效载荷varcharmax 过期日期时间 RetryCount int 相关ID int 状态int 1-等待,2-处理,3-发送,4-重试,5-失败 *ProcessIdLock int-这是一个进程 正在处理消息的消息服务的id 问题是,撇开idempence问题不谈,如何确保一个服务一次处理每条消息 我在考虑这样一个计划: 执行记录锁定:更新消息集ProcessIdLock= MessageProcessorId,设置状态=2-处理,其中 中的MessageId 从消息中选择前10个消息ID 其中ExpirationC# 如何同步存储在数据库中但由多个服务处理的消息,c#,soa,messaging,C#,Soa,Messaging,我想知道如何创建自己的SOA风格的消息传递系统,类似于JMS Java消息传递系统 面向MOM消息传递的中间件需要将消息存储在单个数据库中,但可能由多个服务处理,以实现可扩展性和故障切换 我定义了一个基本消息表,如下所示: MessageId int 创建时间戳日期时间 交付时间戳日期时间 有效载荷varcharmax 过期日期时间 RetryCount int 相关ID int 状态int 1-等待,2-处理,3-发送,4-重试,5-失败 *ProcessIdLock int-这是一个进程 正
谢谢你阅读这篇文章。对我来说,这似乎是一个典型的企业问题。MSMQ是最好的解决方案吗?我是MSMQ新手,MSMQ消息是保存在存储器中还是保存在内存中?我知道它不能直接回答您的问题,但我强烈建议您不要在这里重新发明轮子。创建一个可靠、持久、可扩展的消息传递系统并非易事。例如,我鼓励您研究现有的开源实现。我同意David Nelson的观点。除非你有很好的理由这么做,否则我会看看现有的解决方案。除了NServiceBus,您还可以结帐。也许我对NServiceBus和其他服务(包括MSMQ)还不够了解,但我需要一个允许多个服务处理给定消息的系统。当所有连接的和侦听的服务都处理完该消息后,可以从数据库中删除该消息。我所做的是创建消息、服务和ServiceMessages表。然后我用左外接。。。其中ServiceMessages为NULL以检查处理情况。一旦消息被读取和处理,我会在ServiceMessages表中添加一个条目,表明它已被处理。