我开始探索 NServiceBus、RabbitMQ、MassTransit 和 EasyNetQ。
我特别想了解的一个细节是如何确保始终随每条发布的消息发送一组自定义元数据?
例如,无论消息生产者发布什么,我都可能希望确保以下信息始终作为消息的一部分发送:
- 时间戳
- 工作流程名称
- 优先
元数据是什么并不重要,重要的是具有转发此类任意信息的选项或能力。
我喜欢这样的想法,即生产者发送的消息的名称空间和类名会自动转换为消息的“路由键”。然而,为了将额外的元数据附加到消息中,可能需要有某种“预发布”挂钩点,允许将任意消息转换为包装对象的有效负载,如这样的:
public class BaseMessage {
//a couple fields of meta-data that every message should have.
public string TimeStamp;
public int Priority;
//The payload is the real message that the consumer cares about
//and can be any format (JSON, XML, etc).
public string payload;
}
在这种情况下,我不希望“路由键”包含BaseMessage
. 在序列化之前,有效负载类型是“路由密钥”应该基于的。
当然,所有这些也都假设消费者有一些方便的方法来反序列化 BaseMessage 和有效负载。
那么我列出的哪些工具支持这种需求呢?请在适用的情况下显示示例语法。