RabbitMq安装及java demo

1. RabbitMq 安装

我使用的是mac操作系统,所以这里只介绍mac系统上安装rabbitmq的过程,后面代码部分都是一样的,话不多说,直接干货。
  • 安装home brew
    官方推荐使用home brew安装,所以如果你没有安装hom brew,请先下载并安装,地址为:http://brew.sh/

  • 安装rabbitmq
    直接一句话,brew install rabbitmq,是不是很简单。如果遇到错误,很有可能是安装erlang的时候提示权限不够,根据提示给相应的目录相关权限即可。
    例如:sudo chmod -R g+w /usr/local

    安装完成之后需要将/usr/local/sbin添加到$PATH
    PATH=$PATH:[…]:/usr/local/sbin

    然后启动rabbitmq
    :~ rabbitmq-server
    搞定!

2. RabbitMq 使用

这里只介绍简单的consumer和producer, 直接上代码:

producer:

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

public class RabbitMqProducer {

    private final String URL = "localhost";

    private final String EXCHANGE_NAME = "bj-geinihua-doc-module";

    private static final String[] SEVERITIES = { "key-doc-module", "key-user-event"};

    private static final String ROUTING_KEY = "key-doc-module";

    private static final String  QUEUE_NAME = "bj-geinihua-credit";

    private final String USER_NAME = "";

    private final String PASSWORD = "";

    public void connectBroker(){
        try {
            ConnectionFactory factory = new ConnectionFactory();
            factory.setUsername("guest");
            factory.setPassword("guest");
            factory.setVirtualHost("/");
            factory.setHost("localhost");
            factory.setPort(5672);
            Connection connection = factory.newConnection();

//            ConnectionFactory factory = new ConnectionFactory();  
//            factory.setHost("localhost");
//            Connection connection = factory.newConnection();  
            Channel channel = connection.createChannel();
            //声明转发器
            channel.exchangeDeclare(EXCHANGE_NAME, "direct", true);
            channel.queueDeclare(QUEUE_NAME, true, false, false, null); 
            channel.queueBind(QUEUE_NAME, EXCHANGE_NAME, ROUTING_KEY);

          //发送6条消息  
            for (int i = 0; i < 6; i++)  
            {  
                String severity = getSeverity();  
                String message = severity + "_log :" + UUID.randomUUID().toString();  
                // 发布消息至转发器,指定routingkey  
                channel.basicPublish(EXCHANGE_NAME, severity, null, message  
                        .getBytes());  
                System.out.println(" [x] Sent '" + message + "'");  
            }  

            channel.close();  
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String [] args){
        RabbitMqProducer producer = new RabbitMqProducer();
        producer.connectBroker();
    }

    /** 
     * 随机产生一种日志类型 
     *  
     * @return 
     */  
    private static String getSeverity()  
    {  
        Random random = new Random();  
        int ranVal = random.nextInt(2);  
        return SEVERITIES[ranVal];  
    } 
}

consumer:

import java.io.IOException;

import com.rabbitmq.client.AMQP;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.DefaultConsumer;
import com.rabbitmq.client.Envelope;
import com.rabbitmq.client.QueueingConsumer;

public class RabbitMqConsumer {

private final String URL = "localhost";

    private final String EXCHANGE_NAME = "bj-geinihua-doc-module";

    private static final String[] SEVERITIES = { "key-doc-module", "key-user-event"};

    private static final String ROUTING_KEY = "key-doc-module";

    private static final String  QUEUE_NAME = "bj-geinihua-credit";

    private final String USER_NAME = "";

    private final String PASSWORD = "";

    public static void main(String[] args){
        RabbitMqConsumer consumer = new RabbitMqConsumer();
        consumer.connectBroker("key-user-event");
    }

    public void connectBroker(String routingKey){
        try {
            ConnectionFactory factory = new ConnectionFactory();
            factory.setUsername("guest");
            factory.setPassword("guest");
            factory.setVirtualHost("/");
            factory.setHost("localhost");
            factory.setPort(5672);
            Connection connection = factory.newConnection();
            final Channel channel = connection.createChannel();
            channel.queueBind(QUEUE_NAME, EXCHANGE_NAME, routingKey);
            QueueingConsumer consumer = new QueueingConsumer(channel);  
            channel.basicConsume(QUEUE_NAME, true, consumer);  
            while (true)  
            {  
                QueueingConsumer.Delivery delivery = consumer.nextDelivery();  
                String message = new String(delivery.getBody());  
                System.out.println(" [x] Received '" + message + "'");  
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

OK,运行试试吧,如有问题,可以添加我的qq:64701333,一起学习探讨,Good luck!

参考链接:
http://www.rabbitmq.com/api-guide.html
http://blog.youkuaiyun.com/lmj623565791/article/details/37620057

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值