当前位置:首页 > 科技  > 软件

热门的消息队列框架比较、使用方法、优缺点,提供示例代码

来源: 责编: 时间:2023-12-11 17:20:03 368观看
导读RabbitMQ:RabbitMQ是一个开源的消息队列中间件,基于AMQP(Advanced Message Queuing Protocol)协议。它具有高度的可靠性、可扩展性和灵活性,广泛应用于分布式系统中。特性:
支持多种消息模式:包括点对点模式和发布/订阅模式

a9V28资讯网——每日最新资讯28at.com

RabbitMQ:

RabbitMQ是一个开源的消息队列中间件,基于AMQP(Advanced Message Queuing Protocol)协议。它具有高度的可靠性、可扩展性和灵活性,广泛应用于分布式系统中。a9V28资讯网——每日最新资讯28at.com

特性:
a9V28资讯网——每日最新资讯28at.com

  • 支持多种消息模式:包括点对点模式和发布/订阅模式。
  • 持久化消息:可以将消息存储到磁盘上,即使在重启后也不会丢失。
  • 高可靠性:支持消息的确认机制,确保消息被正确地发送和接收。
  • 可扩展性:支持集群部署,可以通过添加更多的节点来提高吞吐量和可用性。
  • 灵活的路由规则:可以根据消息的内容进行灵活的路由和过滤。

使用方法:
a9V28资讯网——每日最新资讯28at.com

首先需要安装RabbitMQ服务器,并启动它。然后可以使用Java或C#等编程语言通过RabbitMQ的客户端库来发送和接收消息。a9V28资讯网——每日最新资讯28at.com

示例代码(Java):a9V28资讯网——每日最新资讯28at.com

// 发送消息ConnectionFactory factory = new ConnectionFactory();factory.setHost("localhost");try (Connection connection = factory.newConnection();     Channel channel = connection.createChannel()) {    String queueName = "hello";    channel.queueDeclare(queueName, false, false, false, null);    String message = "Hello, RabbitMQ!";    channel.basicPublish("", queueName, null, message.getBytes());    System.out.println("Sent message: " + message);}// 接收消息try (Connection connection = factory.newConnection();     Channel channel = connection.createChannel()) {    String queueName = "hello";    channel.queueDeclare(queueName, false, false, false, null);    Consumer consumer = new DefaultConsumer(channel) {        @Override        public void handleDelivery(String consumerTag, Envelope envelope,                                   AMQP.BasicProperties properties, byte[] body) throws IOException {            String message = new String(body, "UTF-8");            System.out.println("Received message: " + message);        }    };    channel.basicConsume(queueName, true, consumer);}

优缺点:a9V28资讯网——每日最新资讯28at.com

  • 优点:RabbitMQ具有丰富的特性和灵活的路由规则,支持多种消息模式,提供高可靠性和可扩展性。同时,它的社区活跃,有大量的文档和教程可供参考。
  • 缺点:RabbitMQ在处理大量消息时可能会有性能问题,因为它使用了较重的进程和线程模型。另外,它的消息吞吐量相对较低。

Kafka:

Kafka是一个分布式的流处理平台,也是一个高吞吐量的分布式消息队列系统。它具有持久化、可扩展和高性能的特点,广泛应用于大数据领域。
a9V28资讯网——每日最新资讯28at.com

特性:a9V28资讯网——每日最新资讯28at.com

  • 高吞吐量:Kafka能够处理大量的消息并保持很低的延迟。
  • 持久化存储:Kafka将所有的消息都持久化到磁盘上,确保消息不会丢失。
  • 分布式架构:Kafka支持集群部署,可以通过添加更多的节点来提高吞吐量和可用性。
  • 多订阅者模式:Kafka允许多个消费者同时订阅同一个主题,实现消息的广播和分发。

使用方法:
首先需要安装Kafka服务器,并启动它。然后可以使用Java或C#等编程语言通过Kafka的客户端库来发送和接收消息。
a9V28资讯网——每日最新资讯28at.com

示例代码(Java):a9V28资讯网——每日最新资讯28at.com

// 发送消息Properties props = new Properties();props.put("bootstrap.servers", "localhost:9092");props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");try (Producer<String, String> producer = new KafkaProducer<>(props)) {    String topic = "my-topic";    String message = "Hello, Kafka!";    producer.send(new ProducerRecord<>(topic, message));    System.out.println("Sent message: " + message);}// 接收消息Properties props = new Properties();props.put("bootstrap.servers", "localhost:9092");props.put("group.id", "my-group");props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");try (Consumer<String, String> consumer = new KafkaConsumer<>(props)) {    String topic = "my-topic";    consumer.subscribe(Collections.singletonList(topic));    while (true) {        ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100));        for (ConsumerRecord<String, String> record : records) {            String message = record.value();            System.out.println("Received message: " + message);        }    }}

优缺点:a9V28资讯网——每日最新资讯28at.com

  • 优点:Kafka具有高吞吐量、持久化存储和分布式架构的特点,适用于大数据领域的实时流处理。同时,它的社区活跃,有大量的文档和教程可供参考。
  • 缺点:Kafka相对于其他消息队列框架来说较为复杂,需要一定的学习成本。另外,它的配置和部署相对复杂,需要考虑到集群的搭建和数据的备份等问题。

ActiveMQ:

ActiveMQ是一个开源的消息队列中间件,支持多种消息协议,包括AMQP、STOMP和OpenWire等。它具有可靠性、可扩展性和高性能的特点,广泛应用于企业级应用。a9V28资讯网——每日最新资讯28at.com

特性:a9V28资讯网——每日最新资讯28at.com

  • 多种消息模式:ActiveMQ支持点对点模式和发布/订阅模式,可以根据需要选择合适的模式。
  • 消息持久化:可以将消息存储到磁盘上,即使在重启后也不会丢失。
  • 高可用性:ActiveMQ支持主备模式和集群模式,可以提供高可用的消息传递服务。
  • JMS支持:ActiveMQ是Java Message Service(JMS)的实现,可以与其他JMS兼容的系统进行集成。

使用方法:
首先需要安装ActiveMQ服务器,并启动它。然后可以使用Java或C#等编程语言通过ActiveMQ的客户端库来发送和接收消息。
a9V28资讯网——每日最新资讯28at.com

示例代码(Java):a9V28资讯网——每日最新资讯28at.com

// 发送消息ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");try (Connection connection = factory.createConnection();     Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE)) {    Destination destination = session.createQueue("my-queue");    MessageProducer producer = session.createProducer(destination);    TextMessage message = session.createTextMessage("Hello, ActiveMQ!");    producer.send(message);    System.out.println("Sent message: " + message.getText());}// 接收消息ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");try (Connection connection = factory.createConnection();     Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE)) {    Destination destination = session.createQueue("my-queue");    MessageConsumer consumer = session.createConsumer(destination);    connection.start();    Message message = consumer.receive();    if (message instanceof TextMessage) {        TextMessage textMessage= (TextMessage) message;        System.out.println("Received message: " + textMessage.getText());    }}

优缺点:a9V28资讯网——每日最新资讯28at.com

  • 优点:ActiveMQ具有丰富的特性和灵活的配置选项,可以满足各种不同的需求。它支持多种消息协议和多种消息模式,适用于各种场景。同时,ActiveMQ有很好的社区支持和文档资料。
  • 缺点:ActiveMQ相对于其他消息队列框架来说比较重量级,需要一定的系统资源和配置。另外,它的性能相对较低,不适合高吞吐量和实时性要求较高的场景。
  1. RocketMQ:
    RocketMQ是由阿里巴巴开发的分布式消息队列中间件,它具有高吞吐量、低延迟和高可靠性的特点。RocketMQ支持消息的顺序传输和事务消息,并且具有灵活的消息模式和多样化的消息存储方式。

特性:a9V28资讯网——每日最新资讯28at.com

  • 高吞吐量:RocketMQ能够处理高并发的消息传输,适用于大规模的消息处理场景。
  • 消息顺序传输:RocketMQ支持消息的有序传输,可以保证消息按照发送的顺序进行消费。
  • 可靠性:RocketMQ提供了消息的持久化存储和消息的重试机制,可以保证消息的可靠传输。
  • 分布式架构:RocketMQ支持分布式部署和集群模式,可以提供高可用的消息传递服务。

使用方法:
首先需要安装RocketMQ服务器,并启动它。然后可以使用Java或其他编程语言通过RocketMQ的客户端库来发送和接收消息。
a9V28资讯网——每日最新资讯28at.com

示例代码(Java):a9V28资讯网——每日最新资讯28at.com

// 发送消息DefaultMQProducer producer = new DefaultMQProducer("producer-group");producer.setNamesrvAddr("localhost:9876");producer.start();try {    Message message = new Message("topic", "Hello, RocketMQ!".getBytes());    SendResult result = producer.send(message);    System.out.println("Sent message: " + result.getSendStatus());} finally {    producer.shutdown();}// 接收消息DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("consumer-group");consumer.setNamesrvAddr("localhost:9876");consumer.subscribe("topic", "*");consumer.registerMessageListener(new MessageListenerConcurrently() {    @Override    public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> messages, ConsumeConcurrentlyContext context) {        for (MessageExt message : messages) {            System.out.println("Received message: " + new String(message.getBody()));        }        return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;    }});consumer.start();

NATS:

NATS是一个轻量级的、高性能的消息队列中间件,由Cloud Native Computing Foundation(CNCF)维护。NATS具有简单易用、快速和可靠的特点,适用于微服务架构和云原生应用。a9V28资讯网——每日最新资讯28at.com

特性:a9V28资讯网——每日最新资讯28at.com

  • 简单易用:NATS的API简单易懂,上手容易。
  • 高性能:NATS具有低延迟和高吞吐量的特点,适用于高并发的消息传输。
  • 可靠性:NATS支持消息的持久化存储和消息的重试机制,可以保证消息的可靠传输。
  • 分布式架构:NATS支持分布式部署和集群模式,可以提供高可用的消息传递服务。

使用方法:
首先需要安装NATS服务器,并启动它。然后可以使用Java或其他编程语言通过NATS的客户端库来发送和接收消息。
a9V28资讯网——每日最新资讯28at.com

示例代码(Java):a9V28资讯网——每日最新资讯28at.com

// 发送消息Connection connection = Nats.connect("nats://localhost:4222");try {    connection.publish("subject", "Hello, NATS!".getBytes());    System.out.println("Sent message");} finally {    connection.close();}// 接收消息Connection connection = Nats.connect("nats://localhost:4222");try {    Dispatcher dispatcher = connection.createDispatcher((msg) -> {        System.out.println("Received message: " + new String(msg.getData()));    });    dispatcher.subscribe("subject");    connection.flush(Duration.ZERO);    System.out.println("Listening for messages...");    Thread.sleep(10000);} finally {    connection.close();}

本文链接:http://www.28at.com/showinfo-26-42227-0.html热门的消息队列框架比较、使用方法、优缺点,提供示例代码

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 了解一下全新进化的CSS linear缓冲函数

下一篇: Envoy Gateway:十分钟搞定单点登录(SSO)!

标签:
  • 热门焦点
  • 一加Ace2 Pro官宣:普及16G内存 引领24G

    一加官方今天继续为本月发布的新机一加Ace2 Pro带来预热,公布了内存方面的信息。“淘汰 8GB ,12GB 起步,16GB 普及,24GB 引领,还有呢?#一加Ace2Pro#,2023 年 8 月,敬请期待。”同时
  • Golang 中的 io 包详解:组合接口

    io.ReadWriter// ReadWriter is the interface that groups the basic Read and Write methods.type ReadWriter interface { Reader Writer}是对Reader和Writer接口的组合,
  • 腾讯盖楼,字节拆墙

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之&ldquo;想重温暴刷深渊、30+技能搭配暴搓到爽的游戏体验吗?一起上晶核,即刻暴打!&rdquo;曾凭借直播腾讯旗下代理格斗游戏《DNF》一
  • 消费结构调整丨巨头低价博弈,拼多多还卷得动吗?

    来源:征探财经作者:陈香羽随着流量红利的退潮,电商的存量博弈越来越明显。曾经主攻中高端与品质的淘宝天猫、京东重拾&ldquo;低价&rdquo;口号。而过去与他们错位竞争的拼多多,靠
  • 阿里大调整

    来源:产品刘有媒体报道称,近期淘宝天猫集团启动了近年来最大的人力制度改革,涉及员工绩效、层级体系等多个核心事项,目前已形成一个初步的&ldquo;征求意见版&rdquo;:1、取消P序列
  • 小米MIX Fold 3配置细节曝光:搭载领先版骁龙8 Gen2+罕见5倍长焦

    这段时间以来,包括三星、一加、荣耀等等有不少品牌旗下的最新折叠屏旗舰都得到了不少爆料,而小米新一代折叠屏旗舰——小米MIX Fold 3此前也屡屡被传
  • 华为发布HarmonyOS 4:更好玩、更流畅、更安全

    在8月4日的华为开发者大会2023(HDC.Together)大会上,HarmonyOS 4正式发布。自2019年发布以来,HarmonyOS一直以用户为中心,经历四年多的发展HarmonyOS已
  • DRAM存储器10月价格下跌,NAND闪存本月价格与上月持平

    10月30日,据韩国媒体消息,自今年年初以来一直在上涨的 DRAM 存储器的交易价格仅在本月就下跌了近 10%,此次是全年首次降价,而NAND 闪存本月价格与上月持平。市
  • 世界人工智能大会国际日开幕式活动在世博展览馆开启

    30日上午,世界人工智能大会国际日开幕式活动在世博展览馆开启,聚集国际城市代表、重量级院士专家、国际创新企业代表,共同打造人工智能交流平台。上海市副市
Top