RabbitMq(二)
来源:互联网 发布:网络歌手戴丽丽的经历 编辑:程序博客网 时间:2024/06/17 05:58
在这里我将用java来简单的实现rabbitMQ。
大概思路是这样的:发送端发送消息到队列,服务端接收消息。
1. 所需依赖
<dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>4.1.0</version> </dependency>
直接在maven中加入依赖就可以
2. 发送端代码
package baseDemo;import com.rabbitmq.client.Channel;import com.rabbitmq.client.Connection;import com.rabbitmq.client.ConnectionFactory;import java.io.IOException;import java.util.Scanner;import java.util.concurrent.TimeoutException;/** * Created by pxc on 2017/6/27. */public class Send { //队列名称 private final static String QUEUE_NAME = "hello"; public static void main(String[] args) { /** * 创建连接MabbitMQ */ ConnectionFactory factory = new ConnectionFactory(); //设置MabbitMQ所在主机ip或者主机名 factory.setHost("localhost"); //创建一个连接 Connection connection = null; try { connection = factory.newConnection(); //创建一个频道 Channel channel = connection.createChannel(); //指定一个队列 channel.queueDeclare(QUEUE_NAME, false, false, false, null); String message = "hello world!"; while (!message.equals("0")){ Scanner scanner = new Scanner(System.in); System.out.print("请输入要发送的消息:"); message = scanner.nextLine(); //往队列中发出一条消息 channel.basicPublish("", QUEUE_NAME, null, message.getBytes()); System.out.println(" [x] Sent '" + message + "'"); } //发送的消息 //关闭频道和连接 channel.close(); connection.close(); } catch (IOException e) { e.printStackTrace(); } catch (TimeoutException e) { e.printStackTrace(); } }}
注意要启动mq服务
3. 接收端代码
package baseDemo;import com.rabbitmq.client.Channel;import com.rabbitmq.client.Connection;import com.rabbitmq.client.ConnectionFactory;import com.rabbitmq.client.QueueingConsumer;import java.io.IOException;import java.util.concurrent.TimeoutException;/** * Created by pxc on 2017/6/27. */public class Receive { //队列名称 private final static String QUEUE_NAME = "hello"; public static void main(String[] argv) { //打开连接和创建频道,与发送端一样 ConnectionFactory factory = new ConnectionFactory(); factory.setHost("localhost"); Connection connection = null; try { connection = factory.newConnection(); Channel channel = connection.createChannel(); //声明队列,主要为了防止消息接收者先运行此程序,队列还不存在时创建队列。 channel.queueDeclare(QUEUE_NAME, false, false, false, null); System.out.println(" [*] Waiting for messages. To exit press CTRL+C"); //创建队列消费者 QueueingConsumer consumer = new QueueingConsumer(channel); //指定消费队列 channel.basicConsume(QUEUE_NAME, true, consumer); while (true) { //nextDelivery是一个阻塞方法(内部实现其实是阻塞队列的take方法) QueueingConsumer.Delivery delivery = null; delivery = consumer.nextDelivery(); String message = new String(delivery.getBody()); System.out.println(" [x] Received '" + message + "'"); } } catch (IOException e) { e.printStackTrace(); } catch (TimeoutException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } }}
注意: 运行前先要先启动rabbitMq服务
阅读全文
0 0
- RabbitMQ(二)
- RabbitMq(二)
- rabbitmq(二)--命令
- RabbitMQ-二、安装部署
- RabbitMQ消息队列(二)
- RabbitMQ 二 ubuntu安装
- rabbitmq(二)
- RabbitMQ学习(二)
- RabbitMQ(二) java简单的实现RabbitMQ
- rabbitmq 教程 二 Work Queues
- RabbitMQ (二)工作队列
- RabbitMQ (二) 命令初尝
- RabbitMQ (二)工作队列
- RabbitMQ 入门二(hello world)
- RabbitMQ (二)工作队列
- rabbitmq(二)简单测试
- RabbitMQ (二)工作队列
- RabbitMQ (二)工作队列
- SQL 字符类型char varchar nvarchar介绍
- 前端冷知识
- 成为一个理想的程序员
- DB2 的REORG_学习(1)_REORG INDEXES/TABLE Command
- java定时任务小例子
- RabbitMq(二)
- TCP分析和详解
- Matplotlib中的scatter函数
- ImportError DLL load failed: %1 不是有效的 Win32 应用程序
- 关于在nginx负载均衡下,项目共用log4j配置导致的日志混乱问题
- 小米5 Google服务框架安装
- 两重数组排序问题
- eclipse打jar包时也将依赖的jar包打到一起的解决办法
- 盘点各专业到古代都能干些啥