asp.net-core - 公共交通动态事件发布(json事件)的问题
问题描述
我们需要从数据库发布多个事件作为 json 字符串。像这样通过公共交通发布这个 json 事件:
using var scope = _serviceScopeFactory.CreateScope();
var sendEndpointProvider = scope.ServiceProvider.GetService<ISendEndpointProvider>();
var endpoint = await sendEndpointProvider.GetSendEndpoint(new System.Uri("exchange:IntegrationEvents.DynamicEvent:DynamicEvent"))
var json = JsonConvert.SerializeObject(dynamicObject, Newtonsoft.Json.Formatting.None);// sample
var obj = JsonConvert.DeserializeObject(json, new JsonSerializerSettings { });
await endpoint.Send(obj,i=>i.Serializer.ContentType.MediaType= "application/json");
在配置中我们使用这个配置:
cfg.UseRawJsonSerializer();
使用此配置时,json 事件已成功发布,但我们有一个奇怪的问题:“all”事件使用者被空消息数据调用!...在Rabbitmq jsut 中发布了我们的“动态事件”,但在masstrasit 中,所有消费者都调用了!感谢您让我们知道我们是否犯了错误
解决方案
我像这样使用 ExpandoObject 并得到这个异常“消息类型不能在系统命名空间中:System.Dynamic.ExpandoObject ”:
dynamic dynamicObject = new ExpandoObject();
dynamicObject.Id = 1;
dynamicObject.Name = "NameForName";
await endpoint.Send(dynamicObject);
并像这样使用我们得到与“所有消费者称为”相同的结果:
var dynamicObject = new ExpandoObject() as IDictionary<string, object>;
dynamicObject.Add("Id", 1);
dynamicObject.Add("Name", "NameForName");
我观看了您的精彩视频,您直接从 rabbitmq 使用 .. 如何在 C# 代码中“使用带有为 RawJson 配置的序列化程序的端点发送消息对象”。
推荐阅读
- arrays - 遍历数组并填充数组中的空相邻点
- c++ - 自定义地图类中的分段错误
- apache-nifi - NiFi在将记录插入表后创建索引
- mysql - Python 不会从 mysql 表中检索数据
- c - C - 创建一个保存到 ppm 文件中
- javascript - 如何在javascript箭头函数中返回嵌套函数的结果?
- reactjs - 为地图函数内的特定元素呈现对话框窗口
- java - 将 google 身份验证令牌传递给 WebView Activity
- go - 解析 go.mod:意外的模块路径“golang.org/x/lint”
- mysql - MySQL:在连接条件中使用别名