rabbitmq的一些心得

public class Consumer {
	public static void main(String[] args) throws IOException, ShutdownSignalException, ConsumerCancelledException, InterruptedException{
		ConnectionFactory connFactory = new ConnectionFactory();
		connFactory.setHost("localhost");
		Connection connection = connFactory.newConnection();
		Channel channel = connection.createChannel();
		 //连接队列
//		channel.queueDeclare("queue.lubby.test1", false, false, false, null);
		QueueingConsumer consumer = new QueueingConsumer(channel);
		channel.basicConsume("queue.lubby.hello", true, consumer);

		while (true) {
		QueueingConsumer.Delivery delivery  = consumer.nextDelivery();
		String message = new String(delivery.getBody());
		System.out.println("receive message is " + message);
		System.out.println("receive class is " + delivery.getClass());
		System.out.println("receive envelope is " + delivery.getEnvelope());
		System.out.println("receive properties is " + delivery.getProperties());

		doWork(message);
		}

//		channel.close();
//		connection.close();
	}

	private static void doWork(String task) throws InterruptedException {
	    for (char ch: task.toCharArray()) {
	        if (ch == '.') Thread.sleep(10000);
	    }
	}

}

1). 服务器启动与关闭

启动: rabbitmq-server  start

关闭:rabbitmqctl stop

2)生产者代码

public class Provider {
	public static void main(String[] args){

		ConnectionFactory connFactory = new ConnectionFactory();
		connFactory.setHost("localhost");
		try {
			Connection  connection = connFactory.newConnection();
			Channel channel = connection.createChannel();
			// queue为队列名称 如果队列不存在则创建  如果队列存在,则不允许修改队列属性
			//durable 为是否可持久化
			//创建队列
			channel.queueDeclare("queue.lubby.hello2", true, false, false, null);

//			String message = getMessage(args);
			String message = "3.";
			//如果要持久化则 BasicProperties 必须配上
			channel.basicPublish("", "queue.lubby.hello2", MessageProperties.PERSISTENT_TEXT_PLAIN, message.getBytes());
			System.out.println("sent : " + message);
			channel.close();
			connection.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

3)消费者代码

时间: 2024-10-14 00:34:42

rabbitmq的一些心得的相关文章

RabbitMQ学习之:(一)初识、概念及心得

因为网上有一篇很好的RMQ的入门帖子http://lostechies.com/derekgreer/tag/rabbitmq/,所以我就不多说了,就说说我目前看了该作者1~5章后,自己的心得.(所以要看懂我写的内容,需要看完那个作者写的1~5章.你可以先跳过这一篇,因为我后面的博文会依次分析该作者的文章的,等分析完1~5章,就可以回过头来看我写的这篇了) 首先,装好RMQ,且激活了Web管理服务之后(需要先暂停服务,然后重启,看帖子),就可以通过http://localhost:15672来访

消息中间件的技术选型心得-RabbitMQ、ActiveMQ和ZeroMQ

RabbitMQ.ActiveMQ和ZeroMQ都是极好的消息中间件,但是我们在项目中该选择哪个更适合呢?很多开发者面临这个烦恼.下面我会对这三个消息中间件做一个比较,看了后你们就心中有数了. RabbitMQ是AMQP协议领先的一个实现,它实现了代理(Broker)架构,意味着消息在发送到客户端之前可以在中央节点上排队.此特性使得RabbitMQ易于使用和部署,适宜于很多场景如路由.负载均衡或消息持久化等,用消息队列只需几行代码即可搞定.但是,这使得它的可扩展性差,速度较慢,因为中央节点增加了

(转)消息中间件的技术选型心得-RabbitMQ、ActiveMQ和ZeroMQ

RabbitMQ.ActiveMQ和ZeroMQ都是极好的消息中间件,但是我们在项目中该选择哪个更适合呢?很多开发者面临这个烦恼.下面我会对这三个消息中间件做一个比较,看了后你们就心中有数了. RabbitMQ是AMQP协议领先的一个实现,它实现了代理(Broker)架构,意味着消息在发送到客户端之前可以在中央节点上排队.此特性使得RabbitMQ易于使用和部署,适宜于很多场景如路由.负载均衡或消息持久化等,用消息队列只需几行代码即可搞定.但是,这使得它的可扩展性差,速度较慢,因为中央节点增加了

rabbitmq使用心得

因为公司项目需要使用消息中间件,实现相关业务的异步处理,所有选用了rabbitmq.通过看文档,爬过一个一个坑,终于还是实现了相关功能. 直接上配置文件: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/

rabbitmq记录心得(1)

防止表单提交 rabbitmq可以用来防止表单提交,过程如下: 在后台可以设置rabbitmq的队列,通过rabbitmq来新增或者修改数据,原因如下: 在后台直接判断是否已经添加,不能有效防止,因为用户点击多次,相当于形成多个单线程,可以都会执行到判断里面,这样不能防止表单提交,如果用了rabbitmq,相当于点击多次的方法都在消息队列里面,依次执行进去,在从队列中获取参数的方法里面执行判断,这样才能防止表单提交(相当于单例模式,但是用rabbitmq方便简洁些) 原文地址:https://w

rabbitMQ、activeMQ、zeroMQ、Kafka、Redis 比较

Kafka作为时下最流行的开源消息系统,被广泛地应用在数据缓冲.异步通信.汇集日志.系统解耦等方面.相比较于RocketMQ等其他常见消息系统,Kafka在保障了大部分功能特性的同时,还提供了超一流的读写性能. 针对Kafka性能方面进行简单分析,相关数据请参考:https://segmentfault.com/a/1190000003985468,下面介绍一下Kafka的架构和涉及到的名词: Topic:用于划分Message的逻辑概念,一个Topic可以分布在多个Broker上. Parti

奶爸程序员的“育儿”心得

自我介绍一下,本人以前是.net程序员,去年下半年负责把项目从.net转到java,并且有跨机房迁移,亿级访问量,app服务端项目. 自我吐槽一下,工作了8年了,没有成为架构师,也没有进入管理层,没有成为技术大师,也没能成为分享大师.一直在做业务,并在这条路上越走越远.有的时候觉得很尴尬,但又有的时候觉得还蛮适合自己.过年之前,老婆生了一个小公举.宝宝饿了,"老婆快来喂奶!",宝宝又饿了,"老婆快来喂奶!",宝宝睡醒了又饿了,"老婆快来喂奶!"-

RabbitMq、ActiveMq、ZeroMq、kafka之间的比较,资料汇总

MQ框架非常之多,比较流行的有RabbitMq.ActiveMq.ZeroMq.kafka.这几种MQ到底应该选择哪个?要根据自己项目的业务场景和需求.下面我列出这些MQ之间的对比数据和资料. 第一部分:RabbitMQ,ActiveMq,ZeroMq比较 1. TPS比较 一 ZeroMq 最好,RabbitMq 次之, ActiveMq 最差.这个结论来自于以下这篇文章. http://blog.x-aeon.com/2013/04/10/a-quick-message-queue-benc

RabbitMQ学习之:(四)回头看刚才写的程序 (转贴+我的评论)

转自:http://lostechies.com/derekgreer/2012/03/18/rabbitmq-for-windows-hello-world-review/ 我的心得: 1. 在创建ConnectFactory时,我们可以传入主机名.端口号.用户名/密码.虚拟Host等参数. 2. 也可以使用ampq://用户名:密码@主机名:端口号/%2f 3. Channel是轻量级的TCP/IP连接, 而Connection是非常Expensive的. 4. 消息不是直接发到Queue的