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日

相关文章

  • SpringAOP+RabbitMQ+WebSocket实战详解

    下面是SpringAOP+RabbitMQ+WebSocket实战详解的完整攻略,包含两个示例说明。 简介 本文将介绍如何使用SpringAOP、RabbitMQ和WebSocket实现一个简单的聊天室应用。在该应用中,用户可以通过浏览器访问前端页面,输入用户名后加入聊天室,发送消息并接收其他用户的消息。后端使用SpringAOP实现日志记录,RabbitM…

    RabbitMQ 2023年5月16日
    00
  • .NET Core读取配置文件

    以下是“.NET Core读取配置文件”的完整攻略,包含两个示例。 简介 在本攻略中,我们将介绍如何在.NET Core中读取配置文件。通过本攻略的学习,您将了解.NET Core中配置文件的格式、读取配置文件的方式、配置文件的优先级等。 示例一:读取appsettings.json文件 在.NET Core中,可以使用Configuration API来读…

    RabbitMQ 2023年5月15日
    00
  • 详解CentOS 6.5搭建Redis3.2.8单机分布式集群

    下面是详解CentOS 6.5搭建Redis3.2.8单机分布式集群的完整攻略,包含两个示例说明。 简介 Redis是一个高性能的键值存储系统,支持多种数据结构,如字符串、哈希表、列表、集合和有序集合等。在本文中,我们将介绍如何在CentOS 6.5上搭建Redis3.2.8单机分布式集群。 步骤1:安装Redis 在CentOS 6.5上安装Redis非常…

    RabbitMQ 2023年5月16日
    00
  • Docker快速部署SpringBoot项目介绍

    以下是“Docker快速部署SpringBoot项目介绍”的完整攻略,包含两个示例。 简介 Docker是一种轻量级的容器化技术,可以将应用程序及其依赖项打包到一个可移植的容器中,从而实现快速部署和可靠性。本攻略将详细介绍如何使用Docker快速部署SpringBoot项目。 示例1:使用Dockerfile构建镜像 以下是一个使用Dockerfile构建镜…

    RabbitMQ 2023年5月15日
    00
  • 如何配置RabbitMQ的安全性?

    RabbitMQ是一个开源的消息代理软件,它可以用于构建分布式系统中的消息传递架构。在使用RabbitMQ时,安全性是非常重要的。本文将详细介绍如何配置RabbitMQ的安全性,包括如何配置用户、角色、权限、SSL/TLS等。本文还提供了两个示例说明。 如何配置RabbitMQ的安全性? 以下是配置RabbitMQ安全性的步骤: 配置用户和角色 要配置Rab…

    云计算 2023年5月5日
    00
  • 5分钟快速掌握Python定时任务框架的实现

    以下是“5分钟快速掌握Python定时任务框架的实现”的完整攻略,包含两个示例。 简介 Python定时任务框架是一种常用的任务调度工具,可以方便地实现定时任务的执行。本攻略将介绍如何使用Python定时任务框架的实现过程和注意事项,并提供两个示例。 Python定时任务框架的实现 以下是Python定时任务框架的实现过程和注意事项: 1. 安装APSche…

    RabbitMQ 2023年5月15日
    00
  • gitlab ci cd 命令的使用不完全指南

    以下是“GitLab CI/CD命令的使用不完全指南”的完整攻略,包含两个示例。 简介 GitLab CI/CD是一种持续集成和持续交付的工具,可以自动化构建、测试和部署应用程序。本攻略将介绍GitLab CI/CD命令的使用。 示例1:使用GitLab CI/CD构建和测试Java应用程序 以下是使用GitLab CI/CD构建和测试Java应用程序的示例…

    RabbitMQ 2023年5月15日
    00
  • RabbitMQ 的七种队列模式和应用场景

    RabbitMQ 的七种队列模式和应用场景 RabbitMQ 是一个开源的消息队列系统,支持多种消息传递协议。在 RabbitMQ 中,队列是消息的载体,生产者将消息发送到队列中,消费者从队列中获取并进行处理。RabbitMQ 的队列模式决定了消息在队列中的存储方式和消费方式,不同的队列模式适用于不同的应用场景。本文将详细讲解 RabbitMQ 的七种队列模…

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