RabbitMQ是一个开源的消息队列中间件,基于AMQP(Advanced Message Queuing Protocol)协议。它具有高度的可靠性、可扩展性和灵活性,广泛应用于分布式系统中。
成都创新互联公司是创新、创意、研发型一体的综合型网站建设公司,自成立以来公司不断探索创新,始终坚持为客户提供满意周到的服务,在本地打下了良好的口碑,在过去的10余年时间我们累计服务了上千家以及全国政企客户,如PE包装袋等企业单位,完善的项目管理流程,严格把控项目进度与质量监控加上过硬的技术实力获得客户的一致称扬。
特性:
使用方法:
首先需要安装RabbitMQ服务器,并启动它。然后可以使用Java或C#等编程语言通过RabbitMQ的客户端库来发送和接收消息。
示例代码(Java):
// 发送消息
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);
}
优缺点:
Kafka是一个分布式的流处理平台,也是一个高吞吐量的分布式消息队列系统。它具有持久化、可扩展和高性能的特点,广泛应用于大数据领域。
特性:
使用方法:
首先需要安装Kafka服务器,并启动它。然后可以使用Java或C#等编程语言通过Kafka的客户端库来发送和接收消息。
示例代码(Java):
// 发送消息
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 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 consumer = new KafkaConsumer<>(props)) {
String topic = "my-topic";
consumer.subscribe(Collections.singletonList(topic));
while (true) {
ConsumerRecords records = consumer.poll(Duration.ofMillis(100));
for (ConsumerRecord record : records) {
String message = record.value();
System.out.println("Received message: " + message);
}
}
}
优缺点:
ActiveMQ是一个开源的消息队列中间件,支持多种消息协议,包括AMQP、STOMP和OpenWire等。它具有可靠性、可扩展性和高性能的特点,广泛应用于企业级应用。
特性:
使用方法:
首先需要安装ActiveMQ服务器,并启动它。然后可以使用Java或C#等编程语言通过ActiveMQ的客户端库来发送和接收消息。
示例代码(Java):
// 发送消息
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());
}
}
优缺点:
特性:
使用方法:
首先需要安装RocketMQ服务器,并启动它。然后可以使用Java或其他编程语言通过RocketMQ的客户端库来发送和接收消息。
示例代码(Java):
// 发送消息
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 messages, ConsumeConcurrentlyContext context) {
for (MessageExt message : messages) {
System.out.println("Received message: " + new String(message.getBody()));
}
return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
}
});
consumer.start();
NATS是一个轻量级的、高性能的消息队列中间件,由Cloud Native Computing Foundation(CNCF)维护。NATS具有简单易用、快速和可靠的特点,适用于微服务架构和云原生应用。
特性:
使用方法:
首先需要安装NATS服务器,并启动它。然后可以使用Java或其他编程语言通过NATS的客户端库来发送和接收消息。
示例代码(Java):
// 发送消息
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.shufengxianlan.com/qtweb/news37/79337.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联