将值添加到 MassTransit.RabbitMq 中的标头

2024-01-30

我正在使用 MassTransit 3.0.0.0,我很难理解如何在请求-响应场景中拦截消息,并将一些信息添加到我可以在接收器端读取的标头字段。

我正在看中间件 http://masstransit-project.com/MassTransit/advanced/middleware/custom.html,按照 MassTransit 文档中的建议 - 请参阅观察员 https://masstransit-project.com/MassTransit/usage/observers.html警告 - 但您在“发送”上获得的上下文只是一个管道上下文,无法访问“标头”字段,因此我无法更改它。我使用了中提供的示例中间件 http://masstransit-project.com/MassTransit/advanced/middleware/custom.html page.

然后我查看了 IPublishInterceptor

public class X<T> : IPublishInterceptor<T> where T : class, PipeContext
{
    public Task PostPublish(PublishContext<T> context)
    {
        return new Task(() => { });
    }

    public Task PostSend(PublishContext<T> context, SendContext<T> sendContext)
    {
        return new Task(() => { });
    }

    public Task PrePublish(PublishContext<T> context)
    {
        context.Headers.Set("ID", Guid.NewGuid().ToString());
        return new Task(() => { });
    }

    public Task PreSend(PublishContext<T> context, SendContext<T> sendContext)
    {
        context.Headers.Set("ID", Guid.NewGuid().ToString());
        return new Task(() => { });
    }
}

这是非常清晰和简洁的。但是,我不知道它在哪里使用以及如何将其链接到基础设施的其余部分。就目前而言,这只是一个界面,并没有真正链接到任何东西。


如果您需要在发送消息时添加标头,可以将中间件组件添加到发送或发布管道,如下所示。请注意,发送过滤器将应用于所有消息,而发布过滤器将仅应用于已发布的消息。

// execute a synchronous delegate on send
cfg.ConfigureSend(x => x.Execute(context => {}));

// execute a synchronous delegate on publish
cfg.ConfigurePublish(x => x.Execute(context => {}));

中间件可以在总线或单独的接收端点上配置,并且这些配置位于其配置位置的本地。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将值添加到 MassTransit.RabbitMq 中的标头 的相关文章

随机推荐

  • Ruby,exec、system 和 %x() 或反引号之间的区别

    以下 Ruby 方法有什么区别 exec system and x or 反引号 我知道它们用于通过 Ruby 以编程方式执行终端命令 但我想知道为什么有三种不同的方法来执行此操作 system The system http www ru
  • dropzone.js 在没有 dropzone 的页面上给出错误“无效的 dropzone 元素”

    我正在使用 dropzone js 它在我需要 dropzone 的页面上运行得很好 在任何其他页面上 虽然它给了我一个 Invalid dropzone element 错误消息并导致我的其他 javascript 出现问题 我有一个自定
  • 区分 False 和 0

    假设我有一个包含不同值的列表 如下所示 1 2 3 b None False True 7 0 我想迭代它并检查每个元素是否不在某些禁止值列表中 例如 这个列表是 0 0 0 当我检查是否为 False 时 0 0 0 I get True
  • 为什么必须使用函数指针?

    什么情况下需要函数指针 标准答案似乎是回调 但为什么我们不能只传递一个函数呢 我正在阅读的关于 C 的书演示了将函数作为参数传递 并承认实际上编译器会将其转换为函数指针并传递它 因为函数不是实际对象 它显示了使用函数指针的等效代码 这稍微复
  • Ruby on Rails:默认情况下阻止选择列

    I have entries表与一个content可能包含大量文本的字段 在大多数情况下 我不需要访问该字段 因此每次从数据库加载大量未使用的数据 从 id 1 的条目中选择 似乎是对资源的巨大浪费 我如何指定default scope 除
  • 从 bash 输出中排除一个字符串

    我现在正在做一个项目 在这个项目中 由于某些原因 我需要从与模式匹配的输出 或文件 中排除第一个字符串 困难在于我只需要排除一个字符串 即流中的第一个字符串 例如 如果我有 1 abc 2 qwerty 3 open 4 abc 5 tal
  • 我怎样才能得到下面图片的黑白图像?

    我想将图片准确地转换为黑白图像 其中种子将由白色表示 背景为黑色 我想把它放在 python opencv 代码中 请帮帮我 I got good result for the above picture using the given c
  • Swift:UIDocumentInteractionController 不起作用?

    UIDocumentInteractionController 不适用于具有多个页面的大型 pdf 文件 在我的代码中 var docController UIDocumentInteractionController DispatchQu
  • 如何让文本区域占据 div 中的剩余高度?

    我有一组代码如下 要点是在 div 中放置一组图像 然后用文本区域填充 div 的其余部分 如果我设置 height 100 它将使其高度相同 这不是 div height images height 并使文本区域更长 w3c 上说的是in
  • 如何在不写入主目录的情况下运行 podman 和 buildah?

    我的主目录中几乎没有剩余磁盘空间 但是 我的目录中有很多磁盘空间 scratch tmp实验 该目录现在是空的 我想尝试一下命令podman and buildah 只是为了实验和学习 实验结束后我想删除该目录 scratch tmp实验
  • 如何在电报机器人中获得身份验证?

    Telegram 机器人现已准备就绪 如果我们使用网络浏览器和网站进行类比 那么电报客户端应用程序就像浏览器客户端 Telegram 聊天室就像网站 假设我们有一些信息 我们只想限制某些用户 在网站上 我们将进行身份验证 我们如何在 Tel
  • Unity3D 构建后加载资源

    我有很多组图像 PNG 它们放置在Resources项目的 Assets 文件夹中 使用编辑器时 我可以毫无问题地从不同的子文件夹加载图像 只需简单地使用Resources Load 命令并提供我尝试加载的特定图像的路径 例如 firstL
  • java中数组的所有可能的组合和子集

    给定一个可变维度的数组 例如 数组 1 2 4 5 我需要一种方法来概括数组的所有可能组合和子集 给定一个包含 n 个元素的数组 我需要拥有所有子集 1 个元素的所有子集 2 个元素的所有子集 n 个元素的所有子集 以及每个子集的所有可能排
  • (C#) 如何修改现有 XML 文件中的属性值而不加载或重写整个文件?

    我正在 XmlWriter 和 Linq2Xml 的帮助下制作一些巨大的 XML 文件 几个 GB 该文件的类型为 table table
  • 使下拉菜单在点击时向下推送内容

    每当用户选择带有下拉菜单的链接时 我都会尝试下推我的内容 但是 当单击时 下拉菜单会覆盖内容而不是将其向下推 我尝试过使用position relatives position absolute等来达到某种期望的结果 但没有这样的运气 我见
  • 双工命名管道在某个写入时挂起

    我有一个 C 管道服务器应用程序和一个 C 管道客户端应用程序通过 Windows 命名管道进行通信 双工 消息模式 在单独的读取线程中等待 阻塞 一切正常 通过管道发送和接收数据 直到我尝试从客户端写入管道以响应表单 textchange
  • 实际上复制/提取苹果的“iPhone X 的连续角”?

    历史性的问题 请注意 现在就这么简单 https stackoverflow com a 59993994 294884 https stackoverflow com a 59993994 294884 iPhoneX 不寻常的底角是 A
  • 如何解码 matplotlib 颜色图中的颜色映射?

    我知道如何将数字映射到这篇文章中的颜色 将值映射到 matplotlib 中的颜色 https stackoverflow com questions 28752727 map values to colors in matplotlib
  • 训练时间最短的人脸检测算法[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 想问是否有任何适合视频的人脸检测方案需要最少的训练时间 理想情况下是几天而不是像 Viola Jones 那样的几周 我读过有关 LB
  • 将值添加到 MassTransit.RabbitMq 中的标头

    我正在使用 MassTransit 3 0 0 0 我很难理解如何在请求 响应场景中拦截消息 并将一些信息添加到我可以在接收器端读取的标头字段 我正在看中间件 http masstransit project com MassTransit