RabbitMQ -- Java 使用RabbitMQ Demo,可自主研深+relang安装教程+Windows RabbitMQ安装教程

RabbitMQ -- Java 使用RabbitMQ Demo,可自主研深+relang安装教程+Windows RabbitMQ安装教程

背景

最近无聊,研究学习了RabbitMQ(之后简称mq),其实mq很简单,具体的架构图、以及生产者和消费者之间的关系,这里就不在说明了。本帖主要介绍一下windows操作系统下如何安装使用mq,以及用idea+maven+java做的入门级mqDemo。

Erlang安装指南

安装mq之前需要下载Erlang编程语言,具体为什么可自行百度。下载地址:Erlang下载
Erlang下载
根据自己电脑情况选择需要下载的版本。下载完成后之间双击打开。

Erlang安装过程

一、打开后之间安装,安装过程比较简单,这里简单过一下。直接点击next。
Erlang安装步骤1
二、选择安装路径。
Erlang安装步骤2
三、选择启动文件。直接安装。
Erlang安装步骤3
四、Erlang安装完成后需要配置环境变量。

  1. 依次点击: 我的电脑>属性>高级系统设置>环境变量。
    在系统变量中新建变量,变量名: ERLANG_HOME ,变量值为你安装Erlang选择的目录。
    Erlang环境变量配置1
  2. 在系统变量Path中添加: %ERLANG_HOME%\bin 。点击确定,完成环境变量配置。
    Erlang环境变量配置2
  3. 确认Erlang是否安装成功。Windows+R键,输入cmd打开。命令行输入: erl -versionerl -v ,如下图所示出现版本号即安装成功。
    查看Erlang是否安装成功

RabbitMQ 安装指南

首先下载RabbitMq安装文件。下载地址:RabbitMQ下载
mq下载
点击Windows下载,下载完成后直接打开。

mq安装过程

一、运行下载后的文件开始安装,安装过程与Erlang类似。直接点击next。
mq安装步骤1
二、选择自己的安装目录点击安装。注意文件夹名称尽量不要带空格。
mq安装步骤2
三、等待安装完成。
mq安装步骤3
四、安装完成后需要激活rabbitmq_management。cmd命令行进入安装目录,进入 rabbitmq_server- 开头的文件夹下的sbin目录中。
输入: rabbitmq-plugins.bat enable rabbitmq_management 。Enter,如图所示出现以下内容即为成功。
激活rabbitmq_management
五、找到安装后的service -start 文件点击,即可启动RabbitMQ服务。
启动和关闭mq服务
启动成功
六、测试。mq有前端ui页面,默认端口15672,默认账户和密码都是:guest。浏览器输入http://localhost:15672 。出现如下页面即说明mq服务启动成功。
mquUI页面

java+maven+mq demo演示

idea新建maven项目

一、New Project
mqdemo0
二、选择如图所示内容,点击next。
mqdemo1
三、设置GroupId和ArtifactId。可以理解为包名和项目名称。点击next。mqdemo3
四、配置Maven仓库,这里就不做配置了。配置成你本地的Maven仓库就好了。点击next。
mqdemo4
五、设置项目名称和项目文件所在目录。项目默认和ArtifactId一样。点击Finish。创建完成打开项目即可,下面我直接打开我之前创建的demo项目。
mqdemo5
六、配置mq的maven依赖jar。
pom.xml文件的dependencies标签中添加:

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

七、接下来就是生产者与消费者了,具体生产者和消费者之间的关系我就不在详细介绍了,一般就是生产者创建和发布消息内容,消费者接收和查看消息内容喽。

  1. 首先创建生产者:ProducerDemo.java ,在本方法中有一个ConfirmListener,Confirm就是消息确认,ConfirmLisyener就是消息确认监听,大致内容就是当消息成功创建并且发布就会执行监听中的消息成功处理方法handleAck ,发布失败就会执行handleNack
public class ProducerDemo {
    public static void main(String[] args) throws IOException, TimeoutException {
        //1 创建ConnectionFactory
        ConnectionFactory connectionFactory = new ConnectionFactory();
        connectionFactory.setHost("127.0.0.1");
        connectionFactory.setPort(5672);
        connectionFactory.setUsername("guest");
        connectionFactory.setPassword("guest");
        connectionFactory.setVirtualHost("/");

        //2 获取Connection
        Connection connection = connectionFactory.newConnection();

        //3 通过Connection创建一个新的Channel
        Channel channel = connection.createChannel();

        //4 指定我们的消息投递模式: 消息的确认模式
        channel.confirmSelect();

        String exchangeName = "test_confirm_exchange";
        String routingKey = "confirm.save";

        //自定义消息内容
        List<Map<String, Object>> list = new ArrayList<>();
        Map<String, Object> map = new HashMap<>();
        map.put("name", "yxt");
        map.put("age", "23");
        map.put("sex", "男");
        map.put("phone", "0000000");
        list.add(map);

        //5 发送一条消息
        String msg = list.toString();
        channel.basicPublish(exchangeName, routingKey, null, msg.getBytes());

        //6 添加一个确认监听
        channel.addConfirmListener(new ConfirmListener() {
            /**
             * 消息失败处理
             * @param deliveryTag 唯一消息标签
             * @param multiple 是否批量
             * @throws IOException
             */
            @Override
            public void handleNack(long deliveryTag, boolean multiple) throws IOException {
                System.err.println("-------no!-----------");
            }

            /**
             * 消息成功处理
             * @param deliveryTag
             * @param multiple
             * @throws IOException
             */
            @Override
            public void handleAck(long deliveryTag, boolean multiple) throws IOException {
                System.err.println("-------yes!-----------");
            }
        });
    }
}
  1. 创建消费者:ConsumerDemo
public class ConsumerDemo {
    public static void main(String[] args) throws IOException, TimeoutException, InterruptedException {
        //1 创建ConnectionFactory
        ConnectionFactory connectionFactory = new ConnectionFactory();
        connectionFactory.setHost("127.0.0.1");
        connectionFactory.setPort(5672);
        connectionFactory.setUsername("guest");
        connectionFactory.setPassword("guest");
        connectionFactory.setVirtualHost("/");

        //2 获取Connection
        Connection connection = connectionFactory.newConnection();
        //3 通过Connection创建一个新的Channel
        Channel channel = connection.createChannel();

        String exchangeName = "test_confirm_exchange";
        String routingKey = "confirm.#";
        String queueName = "test_confirm_queue";

        //4 声明交换机和队列,然后进行绑定设置路由Key
        channel.exchangeDeclare(exchangeName, "topic", true);
        channel.queueDeclare(queueName, true, false, false, null);
        channel.queueBind(queueName, exchangeName, routingKey);

        //5 创建消费者
        QueueingConsumer queueingConsumer = new QueueingConsumer(channel);
        channel.basicConsume(queueName, true, queueingConsumer);

        //6 接收消息
        while (true) {
            QueueingConsumer.Delivery delivery = queueingConsumer.nextDelivery();
            String msg = new String(delivery.getBody());
            System.err.println("消费端: " + msg);
        }
    }
}
  1. 运行测试,首先运行消费者的main方法,再运行生产者的main方法。显示内容如下:
    生产者控制台:
    生产者控制台打印
    消费者控制台:
    消费者控制台打印
    至此,demo建立成功。
  2. 进入mq的UI页面的queues标签栏中 ,可以看到多出一个名为:test_confirm_queue 的消息队列。
    queues
    点击test_confirm_queue会来到如下页面:
    queues test
    上方红框在有新消息产生时会统计新消息数量,以折线图的形式随时间波动。注意统计的是新产生的消息。当消费者读取消息时,消息条数就会变成0。
    下方红框有一个Get messages,点击展开可以获取到mq中的消息内容。可以自行设置要获取的消息条数。
    getmessage
    测试一下,这里我们先关闭消费者main方法,因为消费者会自动获取最新消息,所以一旦消息被获取,我们在UI界面就无法看的我们的最新消息了。
    运行生产者的main方法。UI界面中可以看到有一条新的消息产生。
    新消息
    点击Get messages中的Get message(s) 。可以看到生产者创建并发布的消息。
    获取消息

END

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在CentOS操作系统上安装rabbitmq-c并使用,具体步骤如下: 1. 安装依赖项:在Linux终端中运行以下命令以安装rabbitmq-c的依赖项: ``` sudo yum install -y make cmake gcc gcc-c++ openssl-devel librabbitmq-devel ``` 2. 下载rabbitmq-c:从rabbitmq-c的官方网站(https://github.com/alanxz/rabbitmq-c)下载最新的源代码。 3. 构建rabbitmq-c:在rabbitmq-c的源代码目录中,运行以下命令以构建rabbitmq-c: ``` mkdir build && cd build cmake .. cmake --build . sudo cmake --build . --target install ``` 4. 在你的C代码中,使用以下头文件包含rabbitmq-c: ``` #include <rabbitmq-c/amqp.h> #include <rabbitmq-c/amqp_tcp_socket.h> ``` 5. 连接到RabbitMQ服务器:在你的C代码中,使用以下代码连接到RabbitMQ服务器: ``` amqp_socket_t *socket = amqp_tcp_socket_new(conn); if (!socket) { // 连接失败的处理 } int status = amqp_socket_open(socket, hostname, port); if (status != AMQP_STATUS_OK) { // 连接失败的处理 } amqp_connection_state_t conn = amqp_new_connection(); if (!conn) { // 连接失败的处理 } amqp_rpc_reply_t reply = amqp_login(conn, "/", 0, 131072, 0, AMQP_SASL_METHOD_PLAIN, username, password); if (reply.reply_type != AMQP_RESPONSE_NORMAL) { // 连接失败的处理 } ``` 6. 发送消息到队列:在你的C代码中,使用以下代码发送消息到队列: ``` amqp_basic_properties_t props; props._flags = AMQP_BASIC_CONTENT_TYPE_FLAG | AMQP_BASIC_DELIVERY_MODE_FLAG; props.content_type = amqp_cstring_bytes("text/plain"); props.delivery_mode = 2; // 持久化消息 amqp_bytes_t message_bytes = amqp_cstring_bytes("Hello, RabbitMQ!"); int status = amqp_basic_publish(conn, 1, amqp_cstring_bytes(exchange_name), amqp_cstring_bytes(routing_key), 0, 0, &props, message_bytes); if (status != AMQP_STATUS_OK) { // 发送失败的处理 } ``` 7. 接收消息:在你的C代码中,使用以下代码接收消息: ``` amqp_rpc_reply_t reply = amqp_basic_consume(conn, 1, amqp_cstring_bytes(queue_name), amqp_empty_bytes, 0, 1, 0, amqp_empty_table); if (reply.reply_type != AMQP_RESPONSE_NORMAL) { // 订阅失败的处理 } while (1) { amqp_envelope_t envelope; amqp_rpc_reply_t reply = amqp_consume_message(conn, &envelope, NULL, 0); if (reply.reply_type != AMQP_RESPONSE_NORMAL) { // 接收失败的处理 } // 在这里处理接收到的消息 amqp_destroy_envelope(&envelope); } ``` 以上就是在CentOS操作系统上安装rabbitmq-c并使用的步骤。希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值