masstransit的message几个高级用法
1)问题,Class MessageA 基类,Class MessageB继承自MessageA;
用bus.Publish方法本想把有些消息只发给B队列,结果由于其继承关系A队列也获得了消息;
解决方法用send,
Uri uri = new Uri(RabbitMqUriQueueB);var endPoint = await _bus.GetSendEndpoint(uri);await endPoint.Send(MessageB);
2)在rabbitmq中设置

把B类型unbind掉,应该就可以了;
3)可能的其他方式
Message Topology · MassTransit

Message Topology
Message types are extensively leveraged in MassTransit, so making it easy to configure how those message types are used by topology seemed obvious.
Entity Name Formatters
Message Type
MassTransit 的exchanges,topics名称默认是消息名称,可以通过如下改为别名.
Bus.Factory.CreateUsingRabbitMq(cfg =>{ cfg.Message<OrderSubmitted>(x => { x.SetEntityName("omg-we-got-one"); });
});
It's also possible to create a message-specific entity name formatter, by implementing IMessageEntityNameFormatter<T> and specifying it during configuration.
class FancyNameFormatter<T> :IMessageEntityNameFormatter<T>
{public string FormatEntityName(){// seriously, please don't do this, like, ever.return type(T).Name.ToString();}
}Bus.Factory.CreateUsingRabbitMq(cfg =>
{cfg.Message<OrderSubmitted>(x =>{x.SetEntityNameFormatter(new FancyNameFormatter<OrderSubmitted>());});
});
It's also possible to replace the entity name formatter for the entire topology.
class FancyNameFormatter<T> :IMessageEntityNameFormatter<T>
{public string FormatEntityName(){// seriously, please don't do this, like, ever.return type(T).Name.ToString();}
}class FancyNameFormatter :IEntityNameFormatter
{public FancyNameFormatter(IEntityNameFormatter original){_original = original;}public string FormatEntityName<T>(){if(T is OrderSubmitted)return "we-got-one";return _original.FormatEntityName<T>();}
}Bus.Factory.CreateUsingRabbitMq(cfg =>
{cfg.Message<OrderSubmitted>(x =>{x.SetEntityNameFormatter(new FancyNameFormatter(cfg.MessageTopology.EntityNameFormatter));;});
});
Attributes
EntityName
通过EntityName 熟悉修改消息名称
[EntityName("order-submitted")]
public record LegacyOrderSubmittedEvent{}
ConfigureConsumeTopology
ConfigureConsumeTopology 可选属性,设置后决定这个消息类型对应的topic或exchange是否应该被创建并订阅到这个队列。
[ConfigureConsumeTopology(false)]
public record DeleteRecord{}
ExcludeFromTopology
ExcludeFromTopology 可选属性,决定这个消息类型实例发布时,这个消息的 topic 或 exchange 是否被创建。
如下例子中发布 ReformatHardDrive 命令不会在broker上创建 ICommand topic or exchange。
[ExcludeFromTopology]
public interface ICommand{}public record ReformatHardDrive : ICommand{}
不使用属性,可以在配置时设置:
...UsingRabbitMq((context,cfg) =>
{cfg.Publish<ICommand>(p => p.Exclude = true);
});
相关文章:
masstransit的message几个高级用法
1)问题,Class MessageA 基类,Class MessageB继承自MessageA; 用bus.Publish方法本想把有些消息只发给B队列,结果由于其继承关系A队列也获得了消息; 解决方法用send, Uri uri new Uri(RabbitM…...
漏洞分析丨cve-2012-0003
作者:黑蛋一、漏洞简介这次漏洞属于堆溢出漏洞,他是MIDI文件中存在的堆溢出漏洞。在IE6,IE7,IE8中都存在这个漏洞。而这个漏洞是Winmm.dll中产生的。二、漏洞环境虚拟机调试工具目标软件辅助工具XP-SP3、KaliOD、IDAIE6Windbg组件gflags.exe三…...
rm命令——删除文件或目录
rm命令是英文单词remove的缩写,主要功能是删除文件或目录。 因为删除文件是一个破坏性动作,因此,在使用时需要格外小心,在执行之前一定要再三确认删除的是哪个目录中的什么文件。 rm命令的语法格式如下: rm [选项] …...
【零基础入门学习Python---Python的基本语法使用】
一.Python基本语法使用 Python是一种易学且功能强大的编程语言,具有简洁的语法和广泛的应用领域。在本文中,我们将介绍Python的基本语法使用,以帮助初学者快速入门Python编程。 1.1 注释 Python 支持两种类型的注释:单行注释和多行注释。 单行注释:以 # 符号开头,从 # …...
数据仓库相关概念的解释
数据仓库相关概念的解释 文章目录数据仓库相关概念的解释1 ETL是什么?ETL体系结构2 数据流向何为数仓DW3 ODS 是什么?4 数据仓库层DWDWD 明细层DWD 轻度汇总层(MID或DWB,data warehouse basis)DWS 主题层(D…...
1/4车、1/2车、整车悬架模糊PID控制仿真合集
目录 前言 1. 1/4悬架系统 1.1数学模型 1.2仿真分析 2. 1/2悬架系统 2.1数学模型 2.2仿真模型 2.3仿真分析 3. 整车悬架系统 3.1数学模型 3.2仿真分析 4.总结 前言 前面几篇文章介绍了LQR、SkyHook、H2/H∞、PID控制,接下来会继续介绍滑模、反步法、M…...
Linux性能补丁升级,避免不必要的跨核Wake-Up
导读一个由英特尔发起的、旨在改进Linux内核公平调度程序代码的补丁系列,也看到了来自AMD工程师和其他利益相关者的测试/反馈,并继续进行改进。这个补丁系列的重点是避免在不必要的情况下发生过多的跨核唤醒(Cross-CPU Wake-up)。这样一来,这…...
Spring Cloud Alibaba全家桶(六)——微服务组件Sentinel介绍与使用
前言 本文小新为大家带来 微服务组件Sentinel介绍与使用 相关知识,具体内容包括分布式系统存在的问题,分布式系统问题的解决方案,Sentinel介绍,Sentinel快速开始(包括:API实现Sentinel资源保护,…...
拼多多2021笔试真题集 -- 3. 多多的求和计算
多多的求和计算 多多路上从左到右有N棵树(编号1~N),其中第i个颗树有和谐值Ai。 多多鸡认为,如果一段连续的树,它们的和谐值之和可以被M整除,那么这个区间整体看起来就是和谐的。 现在多多鸡想请…...
DP算法:动态规划算法
步骤(1)确定初始状态(2)确定转移矩阵,得到每个阶段的状态,由上一阶段推到出来(3)确定边界条件。例题蓝桥杯——印章(python实现)使用dp记录状态,d…...
一三四——一六七
一三四、JavaScript——_DOM简介 MDNq前端参考文档:DOM 概述 - Web API 接口参考 | MDN (mozilla.org) 一三五、JavaScript——HelloWorld <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta h…...
day29_JS
今日内容 上课同步视频:CuteN饕餮的个人空间_哔哩哔哩_bilibili 同步笔记沐沐霸的博客_CSDN博客-Java2301 零、 复习昨日 一、事件 二、DOM操作 三、案例 零、 复习昨日 js 脚本语言,弱类型 引入方案: 3种 js的内容: 语法dombom 语法 变量 var 数据类型 引用类型 - 对象,J…...
【HTTP协议与Web服务器】
HTTP协议与Web服务器浏览器与服务器通信过程HTTP的请求报头HTTP请求报头结构HTTP的请求方法HTTP应答报头HTTP应答报头结构应答状态web服务器的c语言实现浏览器与服务器通信过程 浏览器与Web服务器再应用层通信使用的是HTTP协议,而HTTP协议在传输层使用的是TCP协议。…...
Idea+maven+spring-cloud项目搭建系列--12 整合grpc
前言: grpc 是geogle 开源的rpc 通信框架,通过定义proto生成通信存根,像本地调用服务一样,进行远程服务的调用; 1 消费端服务提供: 1.1 引入grpc 和 protobuf <!-- RPC --> <!-- RPC 服务调用 …...
Revit开洞问题:结构专业开洞口剖面显示及一键开洞
一、Revit中关于结构专业开洞口剖面显示问题 Revit作业的时候,我们不仅只为了一个最后的三维立体模型,我们需要的是一个符合国家以及本院制图标准的一个出图样式,这时候就会出现各种各样的显示问题,本期就一个结构专业开洞显示问题,跟大家一起…...
0107连通分量-无向图-数据结构和算法(Java)
文章目录1 API2 代码实现和分析测试后记1 API 深度优先搜索下一个直接应用就是找出一幅图中的连通分量,定义如下API。 public class CCCC(Graph g)预处理构造函数booleanconnected(int v, int w)v和w连通吗intcount()连通分量数intid(int v)v所在的连通分量标识符(0~count()-…...
[学习笔记]黑马程序员python教程
文章目录思维导图Python基础知识图谱面向对象SQL入门和实战Python高阶技巧第一阶段第九章:Python异常、模块与包1.9.1异常的捕获1.9.1.1 为什么要捕获异常1.9.1.2 捕获常规的异常1.9.1.3 捕获指定的异常1.9.1.4 捕获多个异常1.9.1.5 捕获全部异常1.9.1.6 异常的else…...
如何配置用于构建 FastReport Online Designer 的 API ?
FastReport Online Designer 是一个跨平台的报表设计器,允许通过任何平台的移动设备创建和编辑报表。今天我们就一起来看看在2023版中新增和改进的功能有哪些,点击下方可以获取最新版免费试用哦! FastReport Onlin Designe最新版试用https:/…...
【嵌入式Linux内核驱动】02_字符设备驱动
字符设备驱动 〇、基本知识 设备驱动分类 (按共性分类方便管理) 1.字符设备驱动 字符设备指那些必须按字节流传输,以串行顺序依次进行访问的设备。它们是我们日常最常见的驱动了,像鼠标、键盘、打印机、触摸屏,还有…...
【零散整理】
1-1 git查看代码的项目总行数 git log --prettytformat: --numstat | awk ‘{ add $1; subs $2; loc $1 - $2 } END { printf “added lines: %s, removed lines: %s, total lines: %s\n”, add, subs, loc }’ - 1-2 cookie const cookies document.cookie.split(; )for…...
Vivado 2023.1 与 Questasim 2024.1 协同仿真环境搭建全攻略
1. 环境准备:安装与版本确认 在开始搭建Vivado 2023.1与QuestaSim 2024.1的协同仿真环境前,首先要确保两个软件都已正确安装。我最近在搭建这个环境时发现,新版本对系统环境的要求比旧版本更严格。建议使用Windows 10 64位专业版或企业版&…...
Betaflight飞控固件:2025年如何让你的穿越机飞行更稳定更智能?
Betaflight飞控固件:2025年如何让你的穿越机飞行更稳定更智能? 【免费下载链接】betaflight Open Source Flight Controller Firmware 项目地址: https://gitcode.com/gh_mirrors/be/betaflight 还在为穿越机飞行抖动、信号不稳定而苦恼吗&#x…...
Windows下MIT Kerberos Ticket Manager从安装到实战:一键Keytab登录与票据管理保姆教程
Windows下MIT Kerberos Ticket Manager从安装到实战:一键Keytab登录与票据管理保姆教程 在企业级IT环境中,Kerberos认证是保障系统安全的重要机制。但对于需要频繁进行认证操作的开发者和运维人员来说,反复输入密码不仅效率低下,还…...
反射式红外光电管ITR9909:从基础测试到智能车竞赛应用实战
1. ITR9909反射式红外光电管基础入门 第一次拿到ITR9909这个小家伙时,我差点被它朴素的外表骗了。这个直径不到5mm的黑色塑料封装器件,看起来就像普通的三极管,但它的能力可不容小觑。作为智能车竞赛的老玩家,我发现它在信标检测…...
WarcraftHelper:让魔兽争霸3在现代电脑重获新生的终极解决方案
WarcraftHelper:让魔兽争霸3在现代电脑重获新生的终极解决方案 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸3在Windows …...
审核员能力模型——冰山模型说人话版
📋 审核概论系列 第9篇/共10篇知识和技能不等于能力。认证审核员到底需要什么能力?麦克利兰冰山模型告诉你📊 真实场景:CCAA注册审核员考试通过率大约只有30%-40%。很多人专业知识学了不少,ISO 9001标准背得滚瓜烂熟&…...
从零上手泰凌微TLSR8269:SIG Mesh SDK文件架构与编译环境搭建保姆级指南
泰凌微TLSR8269 SIG Mesh开发实战:从SDK解析到环境搭建全攻略 第一次打开泰凌微TLSR8269的SIG Mesh SDK时,面对密密麻麻的文件夹和文件,不少开发者都会感到无从下手。proj、proj_lib、vendor这些目录到底存放着什么?如何快速搭建起…...
117.YOLOv5/v8数学原理+CSPDarknet架构,CUDA117环境一键部署
摘要 YOLO(You Only Look Once)系列算法是目标检测领域最主流的实时检测框架,其核心思想是将目标检测任务转化为一个端到端的回归问题。 本文从数学原理出发,系统阐述YOLOv5/v8的架构演进与核心机制,并提供一个从数据准备、模型训练到ONNX部署的完整可运行案例。 文章所有…...
开源秘密管理工具 phantom-secrets:本地化安全存储与自动化集成指南
1. 项目概述:一个用于秘密管理的开源工具 在软件开发和运维的日常工作中,秘密(Secrets)的管理一直是个既基础又棘手的问题。无论是数据库密码、API密钥、云服务凭证,还是TLS证书的私钥,这些敏感信息一旦泄露…...
ClawGuard Web:构建AI技能安全扫描平台,从代码安全到信任生态
1. 项目概述:ClawGuard Web 安全技能注册平台如果你在 OpenClaw 生态里开发或使用技能,那你肯定遇到过这个头疼的问题:从 ClawHub 或者 GitHub 上找到一个看起来不错的技能,但心里总犯嘀咕——这代码里会不会藏着恶意后门…...
