首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MOM中的消息元数据

MOM中的消息元数据
EN

Stack Overflow用户
提问于 2015-01-30 22:29:26
回答 2查看 358关注 0票数 0

我开始探索NServiceBus,RabbitMQ,MassTransit和EasyNetQ。

我特别想了解的一个细节是,如何确保自定义的元数据集总是与每条已发布的消息一起发送?

例如,不管消息生成器发布了什么,我可能希望确保始终将下列信息作为消息的一部分发送:

  • TimeStamp
  • 工作流名称
  • 优先级

什么是元数据并不重要,重要的是拥有沿着这些任意信息转发的选项或能力。

我喜欢这样的想法,即由生产者发送的消息的名称空间和类名自动转换为消息的“路由密钥”。但是,为了将额外的元数据附加到消息,可能需要有某种“预发布”挂钩点,允许将任意消息转换为包装器对象的有效负载,如下所示:

代码语言:javascript
复制
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和有效负载。

那么,我列出的哪些工具支持这种需求呢?请在适用的情况下显示语法示例。

EN

回答 2

Stack Overflow用户

发布于 2015-01-30 22:36:53

如果需要将消息格式化为类似XML的格式,从而支持强模式,则只需在接收方接受消息之前执行模式验证即可。然后,如果您能够确保消息在发送之前被检查,那么如果有必要的话,可以通过删除接收方验证来提高性能。

票数 0
EN

Stack Overflow用户

发布于 2015-01-31 06:37:51

在NServiceBus中,您将使用messages来确保发送的所有消息都具有所需的数据

http://docs.particular.net/samples/messagemutators/#transportmessagecompressionmutator

我还建议使用标头来传输这些数据,以避免将业务数据契约与基础设施问题“混淆”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28245704

复制
相关文章

相似问题

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