http://blog.csdn.net/zhu_tianwei/article/details/40835555

amqp-client:http://www.rabbitmq.com/java-client.html

1.依赖jar包

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

2.生产者代码Send.Java

  1. package cn.slimsmart.rabbitmq.demo.helloword;
  2. import com.rabbitmq.client.AMQP;
  3. import com.rabbitmq.client.Channel;
  4. import com.rabbitmq.client.Connection;
  5. import com.rabbitmq.client.ConnectionFactory;
  6. public class Send {
  7. //消息队列名称
  8. private final static String QUEUE_NAME = "helloword";
  9. public static void main(String[] args) throws Exception {
  10. /**
  11. * 创建连接连接到MabbitMQ
  12. */
  13. ConnectionFactory factory = new ConnectionFactory();
  14. //设置MabbitMQ所在主机ip或者主机名
  15. factory.setHost("192.168.101.174");
  16. //指定用户 密码
  17. factory.setUsername("admin");
  18. factory.setPassword("admin");
  19. //指定端口
  20. factory.setPort(AMQP.PROTOCOL.PORT);
  21. //创建一个连接
  22. Connection connection = factory.newConnection();
  23. //创建一个频道
  24. Channel channel = connection.createChannel();
  25. //指定一个队列
  26. channel.queueDeclare(QUEUE_NAME, false, false, false, null);
  27. //发送的消息
  28. String message = "hello world!";
  29. //往队列中发出一条消息
  30. channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
  31. System.out.println("Sent Message:'" + message + "'");
  32. //关闭频道和连接
  33. channel.close();
  34. connection.close();
  35. }
  36. }

3.消费者代码Receive.java

  1. package cn.slimsmart.rabbitmq.demo.helloword;
  2. import com.rabbitmq.client.AMQP;
  3. import com.rabbitmq.client.Channel;
  4. import com.rabbitmq.client.Connection;
  5. import com.rabbitmq.client.ConnectionFactory;
  6. import com.rabbitmq.client.QueueingConsumer;
  7. public class Receive {
  8. //消息队列名称
  9. private final static String QUEUE_NAME = "helloword";
  10. public static void main(String[] args) throws Exception {
  11. //打开连接和创建频道,与发送端一样
  12. ConnectionFactory factory = new ConnectionFactory();
  13. factory.setHost("192.168.101.174");
  14. //指定用户 密码
  15. factory.setUsername("admin");
  16. factory.setPassword("admin");
  17. //指定端口
  18. factory.setPort(AMQP.PROTOCOL.PORT);
  19. //创建一个连接
  20. Connection connection = factory.newConnection();
  21. //创建一个频道
  22. Channel channel = connection.createChannel();
  23. //声明队列,主要为了防止消息接收者先运行此程序,队列还不存在时创建队列。
  24. channel.queueDeclare(QUEUE_NAME, false, false, false, null);
  25. //创建队列消费者
  26. QueueingConsumer consumer = new QueueingConsumer(channel);
  27. //指定消费队列
  28. channel.basicConsume(QUEUE_NAME, true, consumer);
  29. while (true)
  30. {
  31. //nextDelivery是一个阻塞方法(内部实现其实是阻塞队列的take方法)
  32. QueueingConsumer.Delivery delivery = consumer.nextDelivery();
  33. String message = new String(delivery.getBody());
  34. System.out.println("Received Message:'" + message + "'");
  35. }
  36. }
  37. }

如果运行出现如下异常,可能创建的用户没有访问权限。

  1. Exception in thread "main" java.io.IOException
  2. at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:106)
  3. at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:102)
  4. at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:124)
  5. at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:388)
  6. at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:516)
  7. at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:533)
  8. at cn.slimsmart.rabbitmq.demo.test.Test.main(Test.java:18)
  9. Caused by: com.rabbitmq.client.ShutdownSignalException: connection error; reason: java.net.SocketException: Connection reset
  10. at com.rabbitmq.utility.ValueOrException.getValue(ValueOrException.java:67)
  11. at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:33)
  12. at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:343)
  13. at com.rabbitmq.client.impl.AMQChannel.privateRpc(AMQChannel.java:216)
  14. at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:118)
  15. ... 4 more
  16. Caused by: java.net.SocketException: Connection reset
  17. at java.net.SocketInputStream.read(Unknown Source)
  18. at java.net.SocketInputStream.read(Unknown Source)
  19. at java.io.BufferedInputStream.fill(Unknown Source)
  20. at java.io.BufferedInputStream.read(Unknown Source)
  21. at java.io.DataInputStream.readUnsignedByte(Unknown Source)
  22. at com.rabbitmq.client.impl.Frame.readFrom(Frame.java:95)
  23. at com.rabbitmq.client.impl.SocketFrameHandler.readFrame(SocketFrameHandler.java:131)
  24. at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:515)

需要对该用户进行授权,登录web控制台后,点击"admin",进入需要授权的用户,在Admin标签页下点击新增的用户"admin",进入授权页面,默认直接点击"set permission"即可

实例代码:http://download.csdn.net/detail/tianwei7518/8136413

(转) RabbitMQ学习之helloword(java)的更多相关文章

  1. rabbitmq学习(二) —— helloword!

    rabbitmq学习当然是跟着官网走最好了,官网的教程写的很好,跟着官网教程走一遍就会有个初步了解了 下面的教程转自http://cmsblogs.com/?p=2768,该博客对官网的翻译还不错 介 ...

  2. (转) RabbitMQ学习之远程过程调用(RPC)(java)

    http://blog.csdn.net/zhu_tianwei/article/details/40887885 在一般使用RabbitMQ做RPC很容易.客户端发送一个请求消息然后服务器回复一个响 ...

  3. (转)RabbitMQ学习之Headers交换类型(java)

    http://blog.csdn.net/zhu_tianwei/article/details/40923131 Headers类型的exchange使用的比较少,它也是忽略routingKey的一 ...

  4. (转)RabbitMQ学习之主题topic(java)

    http://blog.csdn.net/zhu_tianwei/article/details/40887775 参考:http://blog.csdn.NET/lmj623565791/artic ...

  5. (转)RabbitMQ学习之路由(java)

    http://blog.csdn.net/zhu_tianwei/article/details/40887755 参考:http://blog.csdn.NET/lmj623565791/artic ...

  6. (转) RabbitMQ学习之发布/订阅(java)

    http://blog.csdn.net/zhu_tianwei/article/details/40887733 参考:http://blog.csdn.NET/lmj623565791/artic ...

  7. RabbitMQ学习总结 第三篇:工作队列Work Queue

    目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...

  8. RabbitMQ学习总结 第二篇:快速入门HelloWorld

    目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...

  9. RabbitMQ学习总结 第四篇:发布/订阅 Publish/Subscribe

    目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...

随机推荐

  1. [jzoj 5776]【NOIP2008模拟】小x游世界树 (树形dp)

    传送门 Description 小x得到了一个(不可靠的)小道消息,传说中的神岛阿瓦隆在格陵兰海的某处,据说那里埋藏着亚瑟王的宝藏,这引起了小x的好奇,但当他想前往阿瓦隆时发现那里只有圣诞节时才能到达 ...

  2. Java 动态实现word导出功能

    1.word模板:xx.ftl生成,ftl文件就是word的源代码,类似html一样是拥有标签和样式的代码. 把需要导出的doc文件模板用office版本的word工具打开. 把doc文件另存为xx. ...

  3. luogu P4238 多项式求逆 (模板题、FFT)

    手动博客搬家: 本文发表于20181125 13:21:46, 原地址https://blog.csdn.net/suncongbo/article/details/84485718 题目链接: ht ...

  4. Cleaning

    Cleaning Time limit : 2sec / Memory limit : 256MB Score : 700 points Problem Statement There is a tr ...

  5. MySQL 索引分析

    MySQL复合唯一索引分析 关于复合唯一索引(unique key 或 unique index),网上搜索不少人说:"这种索引起到的关键作用是约束,查询时性能上没有得到提高或者查询时根本没 ...

  6. G - Balanced Lineup

    G - Balanced Lineup POJ - 3264 思路:水题,线段树的基本操作即可. #include<cstdio> #include<cstring> #inc ...

  7. bootstrap-table 表头和内容对不齐

    问题: bootstrap-table.js 找到 BootstrapTable.prototype.resetView if (this.options.showHeader && ...

  8. 笔记本联想(Lenovo)G40-70M加装内存和SSD固态硬盘

    笔记本联想(Lenovo)G40-70M加装内存和SSD固态硬盘 系列文章: 笔记本电脑提速之加装内存条.SSD固态硬盘.光驱位换SSD固态硬盘 笔记本ThinkPad E430c加装内存和SSD固态 ...

  9. POJ2391 Ombrophobic Bovines 网络流拆点+二分+floyed

    题目链接: id=2391">poj2391 题意: 有n块草地,每块草地上有一定数量的奶牛和一个雨棚,并给出了每一个雨棚的容(牛)量. 有m条路径连接这些草地  ,这些路径是双向的, ...

  10. [Javascript] Understand common misconceptions about ES6's const keyword

    Values assigned with let and const are seen everywhere in JavaScript. It's become common to hear the ...