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. 51nod1596 搬货物

    现在有n个货物,第i个货物的重量是 2wi .每次搬的时候要求货物重量的总和是一个2的幂.问最少要搬几次能把所有的货物搬完. 样例解释: 1,1,2作为一组. 3,3作为一组. Input 单组测试数 ...

  2. 搭建rsync服务(端口号873)

    rsync详细参数 1.-v,--verbose 详细模式输出,传输是的进度信息 2.-z,--compress 传输是进行压缩以提高传输效率,--comperess -level = NUM可以按级 ...

  3. 工厂模式的python实现

    #1.什么是工厂模式 #2.工厂模式的分类 ''' 1. 简单工厂模式 2. 工厂方法模式 3. 抽象工厂方法模式 ''' #3.简单工厂模式的python实现 from abc import ABC ...

  4. Mysql学习总结(38)——21条MySql性能优化经验

    今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情. 当我们去设计数据库表结构,对操作数 ...

  5. 转载 - 算法实践——舞蹈链(Dancing Links)算法求解数独

    出处:http://www.cnblogs.com/grenet/p/3163550.html 在“跳跃的舞者,舞蹈链(Dancing Links)算法——求解精确覆盖问题”一文中介绍了舞蹈链(Dan ...

  6. redis-事务-transaction

    redis的目标的是: 简洁,高效,由于事务本身就是一个很复杂的东西,所有我们不能把事务做的太复杂... multi,exec 127.0.0.1:6379> multi OK 127.0.0. ...

  7. nginx配置文件使用

    nginx进程数,建议设置为等于CPU总核心数. worker_processes 8; 全局错误日志定义类型,[ debug | info | notice | warn | error | cri ...

  8. Hive教程(1)

    1. 介绍 Apache Hive可以使用SQL来读,写,管理分布式存储的大数据集,结构可以投射到已经存储的数据上,命令行工具和JDBC驱动可以让用户连接到Hive. 2. 安装和配置 你可以下载Hi ...

  9. Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容

    Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容 当Git无法自动合并分支时,就必须首先解 ...

  10. HDU 4506

    EASY题,快速幂... #include <iostream> #include <cstdio> #include <cstring> #include < ...