zoukankan      html  css  js  c++  java
  • 译MassTransit 消息契约

    消息契约

    在MassTransit中,使用.NET .NET系统定义消息契约。消息可以使用类和接口来定义,但是,建议类型使用只读属性而不使用行为。

    注意:强烈建议使用消息接口的接口,基于多年的经验,具有不同级别的开发经验。MassTransit 将为消息创建动态接口实现,确保消息契约与消费者的干净分离。

    下面显示了一个更新客户地址的示例消息。

    namespace Company.Application.Contracts
    {
    using System;
    
    public interface UpdateCustomerAddress
    {
    Guid CommandId { get; }
    DateTime Timestamp { get; }
    string CustomerId { get; }
    string HouseNumber { get; }
    string Street { get; }
    string City { get; }
    string State { get; }
    string PostalCode { get; }
    }
    }

    工程师在消息传递方面的一个常见错误是为消息创建基类,并尝试在消费者中分配基类——包括子类的行为。哎哟。这总是导致痛苦和痛苦,所以对基类说“不”。

    指定消息名称
    有两种主要的消息类型:事件和命令。当选择一个消息的名称时,消息的类型应该指定消息的时态。

    命令

    命令告诉服务做某事。命令(使用Send)发送到端点,因为预期单个服务实例执行命令操作。命令不应该发布。

    命令应该以动词-名词顺序来表达,遵循the_tell_style风格
    示例命令:

    • UpdateCustomerAddress
    • UpgradeCustomerAccount
    • SubmitOrder

    事件

    事件意味着某事发生了。事件(使用Publish)使用IBus 或ConsumeContext 发布。事件不应直接发送到端点。

    事件应以名词-动词 (过去时态) 序列表示, 表明发生了某事。 

    示例事件:

    • CustomerAddressUpdated
    • CustomerAccountUpgraded
    • OrderSubmitted, OrderAccepted, OrderRejected, OrderShipped

    消息相关性
    由于消息通常不是孤立的,发布一条消息通常会导致发布另一条消息,然后再发布另一条消息,等等。跟踪这些序列是有用的,然而,要找到它们,需要有一些信息详细描述它们是如何相互关联的。

    相关性是将消息连接在一起的原理,通常是通过使用在逻辑序列的一部分中包含的唯一标识符。在MassTransit 中,唯一标识符被称为CorrelationId,它包含在消息信封中,并通过ConsumeContext 或SendContext提供。MassTransit 还包括一个会话ID,在整个相关消息集合中都是相同的。

    MassTransit 支持不同的方法来指定相关性。查看消息相关性文章以获取更多信息。

  • 相关阅读:
    vcruntime140.dll 14.0与PHP版本不兼容,PHP Warning: 'vcruntime140.dll' 14.0 is not compatible with this PHP build linked with 14.16 in Unknown on line 0
    PHP处理字符中的emoji表情
    Thinkphp5 使用unlink删除文件出错Permission denied
    TP5多字段排序
    TP5 按照汉字的拼音排序
    PHP发送微信模版消息
    [52ABP系列]
    [52ABP系列]
    通过微信公众号实现微信快捷登陆
    [Jexus系列] 一、安装并运行 Jexus
  • 原文地址:https://www.cnblogs.com/chengtian/p/9060147.html
Copyright © 2011-2022 走看看