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. HDU1029 - Ignatius and the Princess IV【水题】

    给你n个数字,请你找出出现至少(n+1)/2次的数字. 输入 本题包含多组数据,请处理到EOF: 每组数据包含两行. 第一行一个数字N(1<=N<=999999) ,保证N为奇数. 第二行 ...

  2. 09.正则表达式re-1.正则表达式

    1.正则表达式概述 正则表达式(英语:Regular Expression,在代码中常简写为regex.regexp或RE),是计算机科学的一个概念. 正则表达式使用单个字符串来描述.匹配一系列匹配某 ...

  3. springMVC知识点复习

    @ResponseBody和@RequestBody的使用 <html> <script type="text/javascript" src="rel ...

  4. Windows 2003 IIS 不支持ASP的问题

    Windows 2003 IIS 不支持ASP的问题 问题: HTTP 错误 404 - 文件或目录未找到. Internet 信息服务 (IIS) 第一步,启用Asp,进入:控制面板 -> 管 ...

  5. js的map文件

    什么是source map文件 source map文件是js文件压缩后,文件的变量名替换对应.变量所在位置等元信息数据文件,一般这种文件和min.js主文件放在同一个目录下. 比如压缩后原变量是ma ...

  6. 关于Hanoi算法

    java经典算法——河内算法(Hanoi) 有三根相邻的柱子,标号为A,B,C,A柱子上从下到上按金字塔状叠放着n个不同大小的圆盘,要把所有盘子一个一个移动到柱子B上,并且每次移动同一根柱子上都不能出 ...

  7. MyBatis在注解上使用动态SQL(@select使用if)

    1.用script标签包围,然后像xml语法一样书写 @Select({"<script>", "SELECT * FROM tbl_order", ...

  8. Dockerfile分离构建LNMP环境部署wordpress

    最近忙着写自己的项目,也把一个站点的bbs论坛打算迁移到Docker中,测试没发现啥大问题.在单台上面的架构如下:(往后我们也是要讲到compose和swarm调度的慢慢来) 1.首先我们先安装一下d ...

  9. hdoj 1257最少拦截系统

     /*最少拦截系统 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tota ...

  10. UnrealEngine4之UObject(一)

    Runtime最关键的实现是UObject,它是全部引擎层面.游戏层面对象的基类. UObject实现了动态创建.持久化.脚本化.内存管理.生存期控制. ----------------------- ...