windows下安装RabbitMQ消息服务器 + 读写队列

 RabbitMQ是什么 ?

 RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统。他遵循Mozilla Public License开源协议。

1:安装RabbitMQ需要先安装Erlang语言开发包。下载地址 http://www.erlang.org/download.html 在win7下安装Erlang最好默认安装。

      配置环境变量 ERLANG_HOME C:\Program Files (x86)\erl5.9 

      添加到PATH  %ERLANG_HOME%\bin;

2:安装RabbitMQ 下载地址 http://www.rabbitmq.com/download.html  安装教程:http://www.rabbitmq.com/install-windows.html

      配置环境变量 C:\Program Files (x86)\RabbitMQ Server\rabbitmq_server-2.8.0

      添加到PATH %RABBITMQ_SERVER%\sbin;

3:进入%RABBITMQ_SERVER%\sbin 目录以管理员身份运行 rabbitmq-plugins.bat

     安装完成之后以管理员身份启动 rabbitmq-service.bat

4:浏览器访问localhost:55672  默认账号:guest  密码:guest

 

创建队列名称为queue_sina ,java示例代码读写队列中queue_sina的消息queue_sina

private static final String exchangeName = "sina";

private static final String exchangeRoutingKey = "sina";

HashMap<String,String> map = new HashMap<String,String>();

map.put("text", request.getText());

map.put("image", imageUrl);

map.put("nick_name", this.getUserName(request.getUserid()));

map.put("shop_name", request.getShopname());

String tousu_map = gson.toJson(map, new TypeToken<HashMap<String,String>>(){}.getType());

System.out.println("tousu_map" + tousu_map);

//写入队列

Producer.sendMsg(PropsUtils.getInstance().getProperty(Constants.EXCHANGE_NAME,

exchangeName), PropsUtils.getInstance()

.getProperty(Constants.EXCHANGE_ROUTING_KEY,

exchangeRoutingKey), tousu_map);

 

//写入队列模版类

public class Producer {

private static AmqpTemplate amqpTemplate = null;

static {

ApplicationContext context = new AnnotationConfigApplicationContext(TousuConfiguration.class);

amqpTemplate = context.getBean(AmqpTemplate.class);

}

public static void sendMsg(String exchangeName,String routingKey,Object message){

amqpTemplate.convertAndSend(exchangeName, routingKey,message);

System.out.println("exchangeName: "+exchangeName);

System.out.println("routingKey: "+routingKey);

System.out.println("Sent : "+message);

}

}

 

//读取队列消息

public static void main(String[] args) {

//test 

        try {  

            //队列名称 PropertiesUtil.QUEUE_NAME=queue_sina

            String queueName = PropertiesUtil.QUEUE_NAME;  

            ConnectionFactory factory = new ConnectionFactory();

           //PropertiesUtil.HOST = localhost

            factory.setHost(PropertiesUtil.HOST);

           //PropertiesUtil.USER=guest

            factory.setUsername(PropertiesUtil.USER);

           //PropertiesUtil.PASS=guest

            factory.setPassword(PropertiesUtil.PASS);

           //PropertiesUtil.PORT=5672

            factory.setPort(Integer.parseInt(PropertiesUtil.PORT));

            Connection conn = factory.newConnection();

            Channel channel = conn.createChannel();  

              

            channel.queueDeclare(queueName, true, false, false, null);  

              

            QueueingConsumer consumer = new QueueingConsumer(channel);  

            channel.basicConsume(queueName, true, consumer);  

              

            while(true) {  

                try {  

                    QueueingConsumer.Delivery delivery = consumer.nextDelivery();  

                    String message = new String(delivery.getBody());

                    System.out.println(" [x] Received '" + message + "'");

                } catch (ShutdownSignalException e) {  

                    e.printStackTrace();  

                } catch (InterruptedException e) {  

                    e.printStackTrace();  

                }  

            }  

              

        } catch (IOException e) {  

            e.printStackTrace();  

        }  

}

posted on 2013-08-19 15:34  larryle  阅读(1111)  评论(0编辑  收藏  举报