基于MQ(原理) 基于MQ的最终一致方案 原理、流程与本地消息表类似 不同点:本地销项表改为MQ 不同点:定时任务改为MQ的消费者 不依赖定时任务,基于MQ更高效、更可靠 适合于公司内的系统 不同公司之间无法基于MQ,本地消息表更适合 二.各种消息队列优缺点 rabbitMq rabbitMq 几万级数据量,基于erlang语言开发,...
NettyMQServer netty服务器 - MQ服务器 package com.mayikt.mq; import com.mayikt.handler.NettyMQServerHandler; import com.mayikt.utils.MarshallingCodeCFactory; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelInitializer; import io.netty.cha...
步骤4:创建MQ生产者 创建一个简单的RabbitMQ生产者,发送消息到RabbitMQ。 importcom.rabbitmq.client.ConnectionFactory;importcom.rabbitmq.client.Connection;importcom.rabbitmq.client.Channel;publicclassMQProducer{privatefinalstaticStringQUEUE_NAME="hello";publicvoidsend(Stringmessage)throwsException{ConnectionFactory...
2. MQ的优缺点: 优点:编程简单、消息可持久化 缺点: 可能要搭建单独的MQ服务器、稳定性不高、效率偏低 个人觉得如果需要高效稳定的接口还是用netty,对于同一个接口本人经测试使用netty的话 平均在80ms左右,而却波动较小,换成mq的话接口执行时间波动比较大,平均执行时间 也偏长。
public class MayiktNettyMQServer { public void bind(int port) throws Exception { /** * Netty 抽象出两组线程池BossGroup和WorkerGroup * BossGroup专门负责接收客户端的连接, WorkerGroup专门负责网络的读写。 */ EventLoopGroup bossGroup = new NioEventLoopGroup(); ...
NettyMQServer消息发送采用了Spring AMQP,只需要在配置文件中简单配置一下,就可以方便使用。 NettyMQServer消息接收同样可以采用Spring AMQP,但由于对Spring相关的配置不是很熟悉,为了更灵活的使用MQ,这里使用了RabbitMQ Client Java API来实现: Connection connection =connnectionFactory.newConnection(); ...
简单举个例子,rabbitmq消息中间件应该都知道,我们在使用rabbit的时候只需要定义交换机、队列,然后生产者和消费者分别往指定队列发送消息和监听指定队列消息即可互相收发,但是MQTT只是一种协议,说白了就是一种概念,告诉你这种协议是什么样的,netty并没有帮你实现如何订阅发布,你需要根据自己具体的需求,按照mqtt协议的规范...
1.1 应用场景 像 PRC、MQ 等中间件都是客户端和服务端建立长连接。 如下图,每一个客户端都维护了一个和所有服务端的长连接,放到客户端的长连接池里面。1.2 单点场景 在 IM 场景下,有大量的客户端,需要解决的是端到端的通信,本质是所有客户端和服务端建立长连接,服务端做消息的准发,从而实现整个...
为了无缝切换使用rabbitmq、rocketmq、activemq、不使用中间件存储和转发聊天消息这4种状态,定义如下4个接口。依次是发送单聊消息、群聊消息、客户端启动接收消息、客户端下线不接收消息。 public interface OfflineInfoTransmit { void pushP2P(Integer userId, String message); ...
方案一: netty 集群,通过rocketmq等MQ 推送到所有netty服务端,channel 共享无非是要那个通道都可以发送消息向客户端 方案二: MQ广播+ 多Netty ,Netty收到MQ消息后,如果本地存储有该channel,就发送,没有存储就忽略,完美解决,不需要做channel的共享。 这里使用rabbitmq的订阅发布的广播模式(如果有其他服务可以使用Topi...