easynetq发布订阅demo实现注意事项
最近开始在项目中使用easynetq,大概了解了下api,在网上看了下示例,结果没有一个运行成功的,一个最简单的发布订阅都没有成功。我是直接运行起来别人的示例,不应该啊,后来一直分析一直分析,最后发现:消息没有序列化!这还是其一,第二点,应该要先起来消息接收端,再起来消息发布端。一开始就是简单的:
static void Main()
{
using( var bus = RabbitHutch.CreateBus( "host=localhost" ) )
{
bus.Subscribe<TextMessage>( "test", HandleTextMessage ); Console.WriteLine( "Listening for messages. Hit <return> to quit." );
Console.ReadLine();
}
} static void HandleTextMessage( TextMessage textMessage )
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine( $"Got message {textMessage.Text}" );
}
private static void Main()
{
using (var bus = RabbitHutch.CreateBus("host=localhost"))
{
var input = "";
Console.WriteLine("Enter a message. 'Quit' to quit.");
while ((input = Console.ReadLine())?.ToUpper() != "QUIT")
{
bus.Publish(new TextMessage { Text = input });
}
}
}
public class TextMessage
{
public string Text { get; set; }
}
结果,黑窗口还是黑窗口,为什么没有消息订阅的输出?其实就是因为我们的消息没有序列化。在发布端增加:
bus.Publish<string>(JsonConvert.SerializeObject(new TextMessage{ Text = "Hello World" }));
在接口端增加:
var myMessage = (TextMessage)JsonConvert.DeserializeObject<TextMessage>(obj);
这样就可以了。
其实我们可以使用高级API中的message类来包装我们的消息,这样的话,可以不用在发布端序列化消息,但是依旧需要在接收端反序列化消息。具体请参考:
EasyNetQ-高级API
https://github.com/aspnet/PlatformAbstractions/blob/release/1.1/src/Microsoft.Extensions.PlatformAbstractions/PlatformServices.cs
easynetq发布订阅demo实现注意事项的更多相关文章
- 发布订阅 - 基于A2DFramework的事件机制实现
SUMMARY 能做什么 DEMO 原理图 应用场景 能做什么 A2DFramework的事件机制是基于发布订阅模式改进得来的一套API,中间件部分实现了msmq.redis.Supersocket可 ...
- 【EasyNetQ】- 发布/订阅模式
EasyNetQ支持的最简单的消息传递模式是发布/ 订阅.这种模式是消除消费者信息提供者的绝佳方式.出版商简单地向全世界说,“这已经发生了”或“我现在有了这些信息”.它不关心是否有人正在倾听,他们可能 ...
- EasyNetQ使用(九)【非泛型的发布&订阅扩展方法,发生错误的情况 】
自从EasyNetQ第一个版本开始,它就可以发布/订阅特定类型的消息. bus.Subscribe<MyMessage>("subscriptionId", x =&g ...
- mssql发布订阅事项
在发布订阅过程中遇到2个需求: 1.在原有的发布快照中增加发布内容,追加模式需要在追加的表中设计一个主键,要不然没有办法进行发布的,另外还得注意将这两个字段进行更改: select immediate ...
- 分布式消息总线,基于.NET Socket Tcp的发布-订阅框架之离线支持,附代码下载
一.分布式消息总线以及基于Socket的实现 在前面的分享一个分布式消息总线,基于.NET Socket Tcp的发布-订阅框架,附代码下载一文之中给大家分享和介绍了一个极其简单也非常容易上的基于.N ...
- 分享一个分布式消息总线,基于.NET Socket Tcp的发布-订阅框架,附代码下载
一.分布式消息总线 在很多MIS项目之中都有这样的需求,需要一个及时.高效的的通知机制,即比如当使用者A完成了任务X,就需要立即告知使用者B任务X已经完成,在通常的情况下,开发人中都是在使用者B所使用 ...
- [Redis]发布/订阅
摘要 有这样的一个场景,管理员需要发布一条消息,所有的客户端都要受到通知.然后想到了发布订阅模式.使用redis的发布与订阅实现起来更简单一些,说做就做,这里弄个简单的demo,先模拟下. 核心代码 ...
- Spring Boot使用Redis进行消息的发布订阅
今天来学习如何利用Spring Data对Redis的支持来实现消息的发布订阅机制.发布订阅是一种典型的异步通信模型,可以让消息的发布者和订阅者充分解耦.在我们的例子中,我们将使用StringRedi ...
- SQL Server 2012 复制(发布订阅的研究)
原文:SQL Server 2012 复制(发布订阅的研究) 已实现发布订阅功能,可以实现局域网内双击备份. 一.注意事项: a) 使用[事务复制]功能 b) 必须是相同的SqlServer 帐号和密 ...
随机推荐
- go语言圣经练习
练习 3.10: 编写一个非递归版本的comma函数,使用bytes.Buffer代替字符串链接操作. package main import ( "fmt" "os&q ...
- 线段树——习题、lazy解析
习题: C. Cloud Computing lazy操作解析:
- windows8.1全角与半角切换快捷键
windows8.1全角与半角切换快捷键: shift + 空格
- React Router 4.x 开发,这些雷区我们都帮你踩过了
前言 在前端框架层出不穷的今天,React 以其虚拟 DOM .组件化开发思想等特性迅速占据了主流位置,成为前端开发工程师热衷的 Javascript 库.作为 React 体系中的重要组成部分:Re ...
- CentOS下RPM方式安装MySQL5.6(转载)
之前的项目全都在windows系统环境下部署的,这次尝试在Linux系统环境下部署,于是这次我们组织在7台主机上安装了JDK.Maven.Jboss其中一台安装了Mysql,并将局域网配置好,终于大功 ...
- python知识点
if __name__ == 'main' 一个python的文件有两种使用的方法,第一是直接作为脚本执行,第二是import到其他的python脚本中被调用(模块重用)执行. 因此if __name ...
- pycharm+selenium搭建环境
1.在你的python安装目录D:\Python36\Scripts下执行pip install selenium 2.安装完成后最好直接打开python,在下面输入from selenium imp ...
- P5284 [十二省联考2019]字符串问题
这是一道涵盖了字符串.图论.数据结构三个方面的综合大题. 把这道题放在D1T2的人应该拖出去打 前置芝士 首先,您至少要会topsort. 其次,如果您只想拿个暴力分,字符串Hash就足够了:如果您想 ...
- 机器学习基石10-Logistic Regression
注: 文章中所有的图片均来自台湾大学林轩田<机器学习基石>课程. 笔记原作者:红色石头 微信公众号:AI有道 上一节课介绍了Linear Regression线性回归,用均方误差来寻找最佳 ...
- 关于docker使用
docker讲解:http://dockone.io/article/6051 os: ubuntu 16.04;docker version 18.06.1-ce; (1)查看docker版本:do ...