java操作rabbitmq实现简单的消息发送(socket编程的升级)
准备:
1.下载rabbitmq并搭建环境(和python那篇一样:http://www.cnblogs.com/g177w/p/8176797.html)
2.下载支持的jar包(http://repo1.maven.org/maven2/com/rabbitmq/amqp-client)
生产者方(Productor.java):
package RabbitMQTest; import java.util.HashMap;
import java.util.Map; import com.rabbitmq.client.AMQP.Queue;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory; public class Productor {
public static String QUEUE_NAME = "STEVEN";
public static void main(String[] args) {
//初始化socket链接
ConnectionFactory factory = new ConnectionFactory();
//指定链接地址
factory.setHost("localhost");
try{
//建立程序和rabbitmq的socket连接
Connection connection = factory.newConnection();
//创建管道
Channel channel = connection.createChannel();
//声明队列
channel.queueDeclare(QUEUE_NAME,false,false,false,null);
//让当前线程睡眠8s,以检验rabbitmq的消息轮询
Thread.currentThread().sleep(8000);
String message = "hello,world";
//发送消息
channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
System.out.println("[x] send the message"+message);
channel.close();
connection.close();
}catch (Exception e) {
System.out.println("程序出错:"+e);
} }
}
消费者方(Consummer.java):
package RabbitMQTest;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.QueueingConsumer;
import com.rabbitmq.client.QueueingConsumer.Delivery;
/**
* 本程序为了练习rabbitmq的简单操作
*
* @author STEVEN
*
*/
public class Consumer {
public static void main(String[] args) {
try {
//创建连接工厂对象
ConnectionFactory factory = new ConnectionFactory();
//设置工厂对象的参数,用来连接rabbitmq
factory.setHost("localhost");
//建立程序与rabbitmq的socket连接
Connection connection = factory.newConnection();
//创建管道
Channel channel = connection.createChannel();
//声明队列
channel.queueDeclare(Productor.QUEUE_NAME, false, false, false, null);
System.out.println(" [*] Waiting for messages. To exit press CTRL+C");
//创建队列消费对象
QueueingConsumer consumer = new QueueingConsumer(channel);
//设置参数
channel.basicConsume(Productor.QUEUE_NAME, true, consumer);
//创建接收对象来接收来自服务端的消息
Delivery delivery = null;
//循环接收,相当于开启了一个监听
while (true) {
delivery = consumer.nextDelivery();
String message = new String(delivery.getBody());
System.out.println(" [x] Received '" + message + "'");
}
} catch (Exception e) {
System.out.println(e);
}
}
}
java操作rabbitmq实现简单的消息发送(socket编程的升级)的更多相关文章
- RabbitMQ 简单的消息发送与接收
RabbitMQ是建立在AMQP(Advanced Message Queuing Protocol,高级消息队列协议)基础上的,而AMQP是建立在TCP协议之上的. 因此,RabbitMQ是需要建立 ...
- Java语言快速实现简单MQ消息队列服务
目录 MQ基础回顾 主要角色 自定义协议 流程顺序 项目构建流程 具体使用流程 代码演示 消息处理中心 Broker 消息处理中心服务 BrokerServer 客户端 MqClient 测试MQ 小 ...
- python使用rabbitmq实现简单的消息转发
准备: 1.下载elang语言的支持环境http://www.erlang.org/download.html (rabbitmq使用它开发的) 2.下载rabbitmq软件http://www.ra ...
- 简单理解php的socket编程
php的socket编程算是比较难以理解的东西吧,不过,我们只要理解socket几个函数之间的关系,以及它们所扮演的角色,那么理解起来应该不是很难了,在笔者看来,socket编程,其实就是建立一个网络 ...
- 简单理解php的socket编程【网摘】
php的socket编程算是比较难以理解的东西吧,不过,我们只要理解socket几个函数之间的关系,以及它们所扮演的角色,那么理解起来应该不是很难了,在笔者看来,socket编程,其实就是建立一个网络 ...
- java 操作 RabbitMQ 发送、接受消息
例子1 Producer.java import java.io.IOException; import java.util.concurrent.TimeoutException; import c ...
- C#的Socket简单实现消息发送
Socket一般用于网络之间的通信,在这里,实现的是服务端与客户端的简单消息通信.首先是客户端的搭建,一般步骤是先建立Socket绑定本地的IP和端口,并对远端连接进行连接进行监听,这里的监听一般开启 ...
- java操作RabbitMQ添加队列、消费队列和三个交换机
假设已经在服务器上安装完RabbitMQ.我写的教程 一.发送消息到队列(生产者) 新建一个maven项目,在pom.xml文件加入以下依赖 <dependencies> <depe ...
- C#TCPClient应用-一个简单的消息发送和接收
TcpSend窗口用于发送消息,另外写一个用于接收消息的应用程序,消息接受到以后,必须要关闭接收消息的窗口,才能在接收新的消息,不知道怎么能解决这个问题. 源代码: 发送消息的窗口代码 using S ...
随机推荐
- Spring Boot缓存源码分析
前言 项目里面要增加一个应用缓存,原本想着要怎么怎么来整合ehcache和springboot,做好准备配置这个配置那个,结果只需要做三件事: pom依赖 写好一个ehcache的配置文件 在boot ...
- Gradients渐变属性
一个很不错的网站http://www.w3schools.com/css/css3_gradients.asp http://www.w3cplus.com/css3/new-css3-linear- ...
- BZOJ 2002 Bounce 弹飞绵羊 —— 分块算法
题目链接:https://vjudge.net/problem/HYSBZ-2002 2002: [Hnoi2010]Bounce 弹飞绵羊 Time Limit: 10 Sec Memory Li ...
- java.io.FileNotFoundException:/mnt/sdcard/......(Permission denied)
今天在实现下载模块的时候,从服务器下载apk安装的时候总是不成功. 打开LogCat查看日志,发现在访问sdcard的时候出现Permission denied的情况. 百度之后发现原因是没有添加权限 ...
- redis-cluster的实例动态调整内存
当redis.conf中的最大内存配置为10G的时候,恰好程序已经写满了,但是物理主机是有内存的, 此时可以通过config set xxxx xxxx 来设置实例的内存大小,而不需要重启实例. 获取 ...
- Spring 事务管理高级应用难点剖析: 第 1 部分
Spring 的事务管理是被使用得最多的功能之一,虽然 Spring 事务管理已经帮助程序员将要做的事情减到了最小.但在实际开发中,如果使用不当,依然会造成数据连接泄漏等问题.本系列以实际应用中所碰到 ...
- TX2 刷机过程
1.拿到板子,上电 (1)输入 ls (2)进入NVIDIA-INSTALLER/ (3)再sudo ./installer.sh 账户和密码都是:nvidia (4)sudo reboot 参考博客 ...
- yolo-开源数据集coco kitti voc
1.kitti数据集(参考博客:https://blog.csdn.net/jesse_mx/article/details/65634482 https://blog.csdn.net/baoli ...
- HDU acm1028 整数划分 递归问题(递推)
我们用递归+记忆化的方法来解决普通整数划分问题:定义 f(n,m)为将整数n划分为一系列整数之和,其中加数 最大不超过m. 得到下面的递推关系式: 当n==1 || m==1 只有一种划分,即 1 或 ...
- 使用json-lib的JSONObject.toBean( )时碰到的日期属性转换的问题
今天碰到这样一个问题:当前台以JSON格式向后台传递数据的时候,对于数据中的日期属性,无法正常转换为相应的Date属性.JSON数据是这样的:{"birthday":"1 ...