Java搭建RabbitMq消息中间件过程详解

以下是Java搭建RabbitMQ消息中间件过程详解的完整攻略,包含两个示例说明。

示例1:简单队列模式

步骤1:安装RabbitMQ

首先,您需要安装RabbitMQ。您可以从RabbitMQ官网下载适合您操作系统的安装包进行安装。

步骤2:添加依赖

在pom.xml文件中添加以下依赖:

<dependency>
    <groupId>com.rabbitmq</groupId>
    <artifactId>amqp-client</artifactId>
    <version>5.7.3</version>
</dependency>

步骤3:发送消息

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

public class Producer {

    private final static String QUEUE_NAME = "my_queue";

    public static void main(String[] args) throws Exception {
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("localhost");
        try (Connection connection = factory.newConnection();
             Channel channel = connection.createChannel()) {
            channel.queueDeclare(QUEUE_NAME, false, false, false, null);
            String message = "Hello World!";
            channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
            System.out.println("Message sent: " + message);
        }
    }
}

步骤4:接收消息

import com.rabbitmq.client.*;

import java.io.IOException;

public class Consumer {

    private final static String QUEUE_NAME = "my_queue";

    public static void main(String[] args) throws Exception {
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("localhost");
        Connection connection = factory.newConnection();
        Channel channel = connection.createChannel();
        channel.queueDeclare(QUEUE_NAME, false, false, false, null);
        System.out.println("Waiting for messages...");
        DeliverCallback deliverCallback = (consumerTag, delivery) -> {
            String message = new String(delivery.getBody(), "UTF-8");
            System.out.println("Message received: " + message);
        };
        channel.basicConsume(QUEUE_NAME, true, deliverCallback, consumerTag -> {
        });
    }
}

步骤5:运行程序

运行发送消息的程序后,您将看到以下输出:

Message sent: Hello World!

运行接收消息的程序后,您将看到以下输出:

Waiting for messages...
Message received: Hello World!

示例2:工作队列模式

步骤1:安装RabbitMQ

同示例1。

步骤2:添加依赖

同示例1。

步骤3:发送消息

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

public class Producer {

    private final static String QUEUE_NAME = "my_queue";

    public static void main(String[] args) throws Exception {
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("localhost");
        try (Connection connection = factory.newConnection();
             Channel channel = connection.createChannel()) {
            channel.queueDeclare(QUEUE_NAME, false, false, false, null);
            for (int i = 1; i <= 10; i++) {
                String message = "Message " + i;
                channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
                System.out.println("Message sent: " + message);
            }
        }
    }
}

步骤4:接收消息

import com.rabbitmq.client.*;

import java.io.IOException;

public class Consumer {

    private final static String QUEUE_NAME = "my_queue";

    public static void main(String[] args) throws Exception {
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("localhost");
        Connection connection = factory.newConnection();
        Channel channel = connection.createChannel();
        channel.queueDeclare(QUEUE_NAME, false, false, false, null);
        System.out.println("Waiting for messages...");
        channel.basicQos(1);
        DeliverCallback deliverCallback = (consumerTag, delivery) -> {
            String message = new String(delivery.getBody(), "UTF-8");
            System.out.println("Message received: " + message);
            try {
                Thread.sleep(5000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("Message processed");
            channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false);
        };
        channel.basicConsume(QUEUE_NAME, false, deliverCallback, consumerTag -> {
        });
    }
}

步骤5:运行程序

运行发送消息的程序后,您将看到以下输出:

Message sent: Message 1
Message sent: Message 2
Message sent: Message 3
Message sent: Message 4
Message sent: Message 5
Message sent: Message 6
Message sent: Message 7
Message sent: Message 8
Message sent: Message 9
Message sent: Message 10

运行接收消息的程序后,您将看到以下输出:

Waiting for messages...
Message received: Message 1
Message processed
Message received: Message 2
Message processed
Message received: Message 3
Message processed
Message received: Message 4
Message processed
Message received: Message 5
Message processed
Message received: Message 6
Message processed
Message received: Message 7
Message processed
Message received: Message 8
Message processed
Message received: Message 9
Message processed
Message received: Message 10
Message processed

以上就是Java搭建RabbitMQ消息中间件过程详解的完整攻略,包含两个示例说明。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java搭建RabbitMq消息中间件过程详解 - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • rabbitmq中routingkey的作用说明

    在RabbitMQ中,routing key是用于将消息路由到正确的队列的关键属性。本文将详细讲解routing key的作用和使用方法,并提供两个示例说明。 routing key的作用 在RabbitMQ中,routing key是用于将消息路由到正确的队列的关键属性。当生产者发送消息时,需要指定routing key,RabbitMQ会根据routin…

    RabbitMQ 2023年5月15日
    00
  • RabbitMQ如何设置Dead Letter Exchange?

    以下是RabbitMQ如何设置DeadLetterExchange的完整攻略: 创建DeadLetterExchange 首先,需要创建一个DeadLetterExchange。可以使用RabbitMQ的管理界面或命令行工具来创建DeadLetterExchange。以下是使用命令行工具创建DeadLetterExchange的示例: # 创建一个名为dea…

    云计算 2023年5月5日
    00
  • Preload基础使用方法详解

    以下是“Preload基础使用方法详解”的完整攻略,包含两个示例。 简介 Preload是一种优化网站性能的技术,它可以在页面加载时预加载资源,以提高页面加载速度和用户体验。本攻略将介绍Preload的基础使用方法。 示例1:使用Preload预加载CSS文件 以下是一个使用Preload预加载CSS文件的示例: <!DOCTYPE html> …

    RabbitMQ 2023年5月15日
    00
  • Java面试之高级特性基础总结

    以下是“Java面试之高级特性基础总结”的完整攻略,包含两个示例。 简介 在Java面试中,高级特性是非常重要的一部分。在本攻略中,我们将总结Java高级特性的基础知识,并提供两个示例。 示例一:使用Lambda表达式 以下是使用Lambda表达式的示例: 创建函数式接口 在创建函数式接口时,可以使用以下代码: java @FunctionalInterfa…

    RabbitMQ 2023年5月15日
    00
  • AOP Redis自定义注解实现细粒度接口IP访问限制

    以下是AOP Redis自定义注解实现细粒度接口IP访问限制的完整攻略,包含两个示例。 简介 在Web应用程序中,为了保护敏感数据和资源,我们需要对接口进行访问限制。本攻略将详细讲解如何使用AOP、Redis和自定义注解实现细粒度接口IP访问限制,并提供两个示例。 示例一:基本访问限制 以下是使用AOP、Redis和自定义注解实现基本访问限制的代码示例: 添…

    RabbitMQ 2023年5月15日
    00
  • spring boot整合RabbitMQ实例详解(Fanout模式)

    Spring Boot整合RabbitMQ实例详解(Fanout模式) 在本文中,我们将详细讲解如何使用Spring Boot整合RabbitMQ,并使用Fanout模式进行消息传递。本文将提供两个示例说明。 环境准备 在开始本文之前,需要确保已经安装了以下软件: JDK 1.8或更高版本 RabbitMQ服务器 创建Spring Boot项目 首先,我们需…

    RabbitMQ 2023年5月15日
    00
  • .Net使用RabbitMQ即时发消息Demo

    以下是使用RabbitMQ在.NET中实现即时消息发送的完整攻略,包含两个示例说明。 示例1:发送消息到RabbitMQ 步骤1:安装RabbitMQ.Client 使用NuGet包管理器安装RabbitMQ.Client。 步骤2:创建消息发送者 创建一个消息发送者类,用于发送消息到RabbitMQ: using RabbitMQ.Client; usin…

    RabbitMQ 2023年5月15日
    00
  • go语言gin框架中间件详解

    以下是“Go语言Gin框架中间件详解”的完整攻略,包含两个示例。 简介 Gin是一个轻量级的Web框架,具有高性能和易用性。本攻略将详细介绍Gin框架中间件的概念和使用方法,包括全局中间件、路由中间件、组中间件等,并提供两个示例,分别演示了使用Gin框架中间件的过程。 步骤 以下是Go语言Gin框架中间件详解的步骤: 全局中间件 全局中间件是指在所有路由处理…

    RabbitMQ 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部