3 Star 0 Fork 0

shao_win / ab-rabbitMQ

加入 Gitee
与超过 600 万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README.md

#ab-rabbitMQ

本文练习做了一个简单的消息队列的demo,一个消息生产者Send.java,一个消息消费者Recv.java,还有一个消息队列服务器rabbitMQ.

在这个例子中,生产者每5s发送一个Hello World!到队列当中,消费者时刻监听从队列当中读出信息并打印出来。

部署rabbitMQ

docker由于它的跨平台,可移植性高等优点备受欢迎,rabbitMQ官方也提供了docker部署的镜像,因此这里使用docker的方式进行部署。

rabbitMQ官方也提供了一个包含web管理面板插件的镜像,访问端口为15672,默认的用户名和密码:guest/guest

$ docker run -d --hostname my-rabbit
-p 15672:15672 -p 5672:5672--name ab-rabbit rabbitmq:3-management

ps:5672为生产者,消费者连接rabbitMQ的端口

若想能够看到每一次发送的消息,还可以添加rabbitmq_tracing插件,启动rabbitMQ容器后进入容器,执行:

$ rabbitmq-plugins enable rabbitmq_tracing

浏览器访问:http://{ip}:15672查看是否部署成功

添加一个trace查看捕获信息,新增的如下:

点击MyTrace.log即可查看text格式的日志(需要先启动后面的例子)

一个简单使用rabbitMQ的例子

1.项目引入依赖

<dependencies>
        <!-- https://mvnrepository.com/artifact/com.rabbitmq/amqp-client -->
        <dependency>
            <groupId>com.rabbitmq</groupId>
            <artifactId>amqp-client</artifactId>
            <version>4.0.2</version>
        </dependency>

        <!-- logback -->
        <dependency>
            <groupId>com.getsentry.raven</groupId>
            <artifactId>raven-logback</artifactId>
            <scope>runtime</scope>
            <version>7.6.0</version>
        </dependency>
    </dependencies>

2.创建一个生产者

package com.shaowin.rabbitMQ;

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

import java.util.concurrent.TimeoutException;

/**
 * Created by chenshaowen on 2017/2/6.
 */
public class Send {
    private final static String QUEUE_NAME = "hello";

    public static void main(String[] argv) throws java.io.IOException, TimeoutException, InterruptedException {
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("101.200.169.59");
        Connection connection = factory.newConnection();
        Channel channel = connection.createChannel();

        channel.queueDeclare(QUEUE_NAME, false, false, false, null);
        String message = "Hello World!";
        int i=1;
        //测试,为了方便查看web的变化
        while (true){
            channel.basicPublish("", QUEUE_NAME, null, (message+i).getBytes());
            i++;
            Thread.sleep(5000);
        }
//        System.out.println(" [x] Sent '" + message + "'");
//
//        channel.close();
//        connection.close();
    }
}

3.创建一个消费者

package com.shaowin.rabbitMQ;

import com.rabbitmq.client.*;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

/**
 * Created by chenshaowen on 2017/2/6.
 */
public class Recv {
    private final static String QUEUE_NAME = "hello";

    public static void main(String[] argv)
            throws java.io.IOException,
            java.lang.InterruptedException, TimeoutException {

        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("101.200.169.59");
        Connection connection = factory.newConnection();
        Channel channel = connection.createChannel();

        channel.queueDeclare(QUEUE_NAME, false, false, false, null);
        System.out.println(" [*] Waiting for messages. To exit press CTRL+C");

        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(" [x] Received '" + message + "'");
            }
        };
        channel.basicConsume(QUEUE_NAME, true, consumer);
    }
}

分别运行两个程序,可在web面板查看相应信息

参考

仓库评论 ( 0 )

你可以在登录后,发表评论

简介

本项目主要是为了了解rabbitMQ的使用而书写的一个测试demo 展开 收起
Java
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/shao_win/ab-rabbitMQ.git
git@gitee.com:shao_win/ab-rabbitMQ.git
shao_win
ab-rabbitMQ
ab-rabbitMQ
master

搜索帮助