随笔分类 -  07-RabbitMQ

1
摘要:EasyNetQ.Hosepipe是EasyNetQ队列管理工具。用来取回队列中的消息并重新发布这些消息。还可以用它来检测错误队列,并重试发布消息。 用法 EasyNetQ.Hosepipe.exe <command> [<option:value> ..] 命令 dump 转存队列中的所有消息到一 阅读全文
posted @ 2022-02-27 08:26 .Neterr 阅读(119) 评论(0) 推荐(0)
摘要:为了能够支持消息版本控制,你需要确保这个必要的组件已配置。最简单的实现是这样的: var bus = RabbitHutch.CreateBus("host=localhost", services => services.EnableMessageVersioning()); 一旦消息版本功能启动 阅读全文
posted @ 2022-01-09 22:39 .Neterr 阅读(52) 评论(0) 推荐(0)
摘要:如果publish、Subscribe所用的Message不是同一类型如何处理? 替换组件ITypeNameSerializer 1、下面这个类是从Easynetq源码中拷出来的,主要包含两个方法Serialize、Deserialize 由于这两个方法不是虚方法,所以不能重写,我们把源码拷出来,把 阅读全文
posted @ 2020-10-14 13:34 .Neterr 阅读(1154) 评论(0) 推荐(0)
摘要:1.为什么要保证顺序 消息队列中的若干消息如果是对同一个数据进行操作,这些操作具有前后的关系,必须要按前后的顺序执行,否则就会造成数据异常。举例: 比如通过mysql binlog进行两个数据库的数据同步,由于对数据库的数据操作是具有顺序性的,如果操作顺序搞反,就会造成不可估量的错误。比如数据库对一 阅读全文
posted @ 2020-09-07 11:12 .Neterr 阅读(445) 评论(0) 推荐(0)
摘要:EasyNetQ是一个由小组件组成的库。当你写如下代码: var bus = RabbitHutch.CreateBus("host=localhost"); 静态方法CreateBus通过IoC容器组装这些组件,CreateBus的一个重载允许你访问组件注册,这样您就可以提供您自己版本的EasyN 阅读全文
posted @ 2020-09-06 17:25 .Neterr 阅读(278) 评论(0) 推荐(0)
摘要:EasyNetQ的使命是为基于RabbitMQ的消息传递提供最简单的API。 核心IBus接口有意避免公开AMQP概念,如交换,绑定和队列,而是实现基于消息类型的默认交换绑定队列拓扑。 对于某些场景,能够配置您自己的exchange绑定队列拓扑是很有用的;高级EasyNetQ API允许您这样做。高 阅读全文
posted @ 2020-09-06 17:10 .Neterr 阅读(922) 评论(0) 推荐(0)
摘要:随着SOA、微服务、CQRS的盛行,EventBus越来越流行,上GitHub搜了一下,还是有蛮多的这类实现,老牌的有NServiceBus(收费)、MassTransit,最近的有CAP(国人写的,1.4k个Star,非常不错)、ReBus(张队长在NanoFabric中推荐的)、RawRabbi 阅读全文
posted @ 2020-09-06 17:03 .Neterr 阅读(232) 评论(0) 推荐(0)
摘要:Request/Response模式 介绍 EasyNetQ也支持Request/Response这种方式的消息模式。适合在client/Server应用中执行,客户端发送一个请求到服务器,服务器然后处理请求后返回一个响应。和传统的RPC机制不同,EasyNetQ request/response操 阅读全文
posted @ 2020-09-05 23:17 .Neterr 阅读(814) 评论(0) 推荐(0)
摘要:介绍 EasyNetQ支持的最简单的消息模式是发布/订阅.这个模式是一个极好的方法用来解耦消息提供者和消费者。消息发布者只要简单的对世界说“这里有些事发生” 。它不关心有没有人监听,或者接收者是谁,或者接收者在那里。我们能够添加和移除特定类型的消息的订阅者,不需发布者做任何的重新配置。 假如你开始去 阅读全文
posted @ 2020-09-05 22:41 .Neterr 阅读(1283) 评论(0) 推荐(1)
摘要:连接 //创建连接 var bus = RabbitHutch.CreateBus(“host=myServer;virtualHost=myVirtualHost;username=mike;password=topsecret”); //关闭连接 bus.Dispose(); 连接字符串说明 h 阅读全文
posted @ 2020-09-05 11:17 .Neterr 阅读(425) 评论(0) 推荐(1)
摘要:介绍 EasyNetQ是一个在RabbitMQ.Client类库之上提供服务的组件集合。做了这些事情,像序列化、错误处理、线程管理、连接管理等。通过一个Mini-Ioc容器组织在一起。你能很容易用你自己实现去替换这些组件。所以如果你喜欢用XML序列化而不是用JSON,仅仅需要以一个ISerializ 阅读全文
posted @ 2020-09-05 08:04 .Neterr 阅读(773) 评论(0) 推荐(0)
摘要:QOS:服务质量保证功能 Prefetch count (预取数目) prefetch是指单一消费者最多能消费的unacked messages数目。 mq为每一个consumer设置一个缓冲区,大小就是prefetch。每次收到一条消息,MQ会把消息推送到缓存区中,然后再推送给客户端。当收到一个a 阅读全文
posted @ 2020-08-31 15:05 .Neterr 阅读(2645) 评论(0) 推荐(0)
摘要:相关概念 RPC,是Remote Procedure Call的简称,即远程过程调用。 通俗点来说,假设有两台服务器A和B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数或者方法,由于不在同一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。 一般在RabbitMQ 阅读全文
posted @ 2020-07-26 16:55 .Neterr 阅读(206) 评论(0) 推荐(0)
摘要:如何保证消息100%投递成功: 保证消息投递成功需要在生产者、消息队列、消费者3个环节控制 消息队列 消息队列需要将交换器、队列、消息持久化,防止因断电等问题导致数据因没有持久化而丢失 生产者 生产者需要确保消息发送到消息队列,需要使用事务或消息确认的方式可以确保数据发送成功,推荐使用消息确认方式。 阅读全文
posted @ 2020-07-26 16:46 .Neterr 阅读(896) 评论(0) 推荐(0)
摘要:Header交换机案例 private void btnHeadersPublish_Click(object sender, EventArgs e) { using (var channel = connection.CreateModel()) { channel.ExchangeDeclar 阅读全文
posted @ 2020-07-23 23:18 .Neterr 阅读(436) 评论(0) 推荐(0)
摘要:发布消息(BasicPublish) void BasicPublish(string exchange, string routingKey, bool mandatory, IBasicProperties basicProperties, byte[] body); void BasicPub 阅读全文
posted @ 2020-07-23 23:16 .Neterr 阅读(465) 评论(0) 推荐(0)
摘要:RabbitMQ六种消息模型 Hello World 最简单的消息模型,图中没有交换器,实际使用的是默认交换器,默认交换器的类型是Direct,默认'binding key'和队列名同名 发送消息时交换器名传空字符串,binding key传队列名 // 发消息 using (var channel 阅读全文
posted @ 2020-07-23 22:49 .Neterr 阅读(218) 评论(0) 推荐(0)
摘要:Queue参数 durable:是否持久化, 队列默认是存放到内存中的,rabbitmq重启会丢失,如果想重启之后还存在就要使队列持久化,保存到Erlang自带的Mnesia数据库中,当rabbitmq重启之后会读取该数据库 exclusive:是否排外的,队列在当前connection下的chan 阅读全文
posted @ 2020-07-21 23:46 .Neterr 阅读(1097) 评论(0) 推荐(0)
摘要:核心接口和类 IConnection:表示一个连接 IModel:表示一个Channel ConnectionFactory:连接工厂 IBasicConsumer:代表一个消费者消息 DefaultBasicConsumer:常用的消费者基类 主要命名空间 RabbitMQ.Client:核心AP 阅读全文
posted @ 2020-07-09 16:14 .Neterr 阅读(642) 评论(0) 推荐(0)
摘要:消息队列(MQ): 是一种应用程序间通讯方法,不需要程序之间直接建立联系。MQ是用于接收、存储、分发消息的独立应用程序。 常见的MQ ActiveMQ:基于JMS RocketMQ:阿里巴巴的产品,基于JMS Kafka:分布式消息系统,亮点:吞吐量超级高,每秒数十万的并发。 RabbitMQ:由e 阅读全文
posted @ 2020-07-09 14:42 .Neterr 阅读(138) 评论(0) 推荐(0)

1