摘要: 在本文的前两篇文章里对MSMQ的相关知识点进行了介绍,很多阅读过这前两篇文章的朋友都曾问到过这样一些问题: 1、如何把MSMQ应用到实际的项目中去呢? 2、可不可以介绍一个实际的应用实例? 3、...... 在前两篇文章里,关于MSMQ常用的技术点基本介绍完毕了,本文主要以MS开源项目PetShop中的MSMQ应用作为案例来介绍MSMQ在实际项目中的 应用。在PetShop里,由于系统使用了多线程的专用应用程序来监控消息队列,在进入PetShop应用分析前,我们先来了解下关于多线程和MSMQ的 相关知识点。 一、多线程和MSMQ 现在有这样一个需求,指定的消息队列里不管有无消息... 阅读全文
posted @ 2011-08-30 22:27 amityat 阅读(344) 评论(0) 推荐(0) 编辑
摘要: 在我上一篇文章《ASP.NET中进行消息处理(MSMQ)一》里对MSMQ做了个通俗的介绍,最后以发送普通文本消息和复杂的对象消息为例介绍了消息队列的使用。本文在此基础上继续介绍MSMQ的相关知识点,最后还是通过一个示例程序来分析MSMQ在实际项目开发中的应用。 建议:如果你对MSMQ不够了解,在你阅读本文前请先阅读第一部分:《ASP.NET中进行消息处理(MSMQ)一》。 一、消息传递的优先级 在MSMQ中消息在队列里传输是分有优先级的,这里我就以实例的形式介绍下关于优先级的使用,优先级一共有七种,MessagePriority枚举里全部进行了封装。因这里只作程序演示就不一一列举出,仅... 阅读全文
posted @ 2011-08-30 22:27 amityat 阅读(316) 评论(0) 推荐(0) 编辑
摘要: MSMQ是微软消息队列的英文缩写。那么什么是消息队列?这些介绍网上一大片这里就不多说了。本文对于大虾级的人物来说这只是小玩意而已,对于初学者来说这文章还是有一定的帮助,希望路过的大虾们别笑话我班门弄斧。 一、MSMQ介绍和安装消息队列 关于MSMQ详细的介绍请大家向http://www.baidu.com/或http://www.g.cn/等专家咨询。 使用消息队列的优点:稳定、消息优先级、脱机能力以及安全性。 消息队列分为用户创建的队列(专用队列)和系统队列,用户队列分为,。我是Windows XP,看下图所示(myQueue为自己创建的消息队列,msmqtriggersnotifi... 阅读全文
posted @ 2011-08-30 22:26 amityat 阅读(365) 评论(0) 推荐(0) 编辑
摘要: 1,temporary queue(由server自动命名)在关闭连接时会自动从server端清除2,basicConsumer,basicGetchannel.basicConsume(queue, noAck, queueingConsumer);channel.basicGet(queue, noAck);noAck = true,不需要回复,接收到消息后,queue上的消息就会清除noAck = false,需要回复,接收到消息后,queue上的消息不会被清除,直到调用channel.basicAck(deliveryTag, false); queue上的消息才会被清除而且,在当前连 阅读全文
posted @ 2011-08-30 21:56 amityat 阅读(771) 评论(0) 推荐(0) 编辑
摘要: rabbitmq java api 关于消息处理的一个重要的类是channelchannel 主要进行相关定义,发送消息,获取消息,事务处理等。channel可以在多线程中使用,但是在任何时候保证只有一个线程执行命令是很重要的,这在前面 rabbitmq 学习-6-rabbitmq基础 已经说的很清楚了。public interface Channel extends ShutdownNotifier {// 重新得到channel numberint getChannelNumber();//得到当前channel的connectionConnection getConnection().. 阅读全文
posted @ 2011-08-30 21:55 amityat 阅读(1687) 评论(0) 推荐(0) 编辑
摘要: 1,ChannelbasicPublish() 用来发送消息,接收返回消息是异步的basicGet() 接收一些简单的消息(Retrieving individual messages)basicConsumer() 用来指定一个Consumer去某个queue上去接收订阅的消息(Retrieving messages by subscription)2,RpcClient,RpcServerrabbitmq java client api 提供的进行Rpc样式远程调用的类 ,即实现同步调用,等待返回结果 阅读全文
posted @ 2011-08-30 21:55 amityat 阅读(609) 评论(0) 推荐(1) 编辑
摘要: 本身使用RpcClient发送消息与同步接收消息的代码是很简单的,如下: RpcClient client = new RpcClient(channel, exchange, routingKey); String msg = "hello world!"; byte[] result = client.primitiveCall(msg.getBytes()); 这里的primitiveCall调用后,当前线程会进行同步等待,等待消息接收端给自己的回复消息 一个完整的发送消息与接收回复消息的图例: 整个流程详解: l创建RpcClient实例 RpcClient cli 阅读全文
posted @ 2011-08-30 21:54 amityat 阅读(1317) 评论(0) 推荐(0) 编辑
摘要: 1,bind时候出错 // 定义一个queue,durable(即rabbitmq重启后也不会消失) DeclareOk queueDeclare = channel.queueDeclare("test.queue", true) channel.exchangeDeclare( "test.exchange", "direct"); channel.queueBind("test.queue", "test.exchange", "test.routingkey"); / 阅读全文
posted @ 2011-08-30 21:52 amityat 阅读(2862) 评论(0) 推荐(0) 编辑
摘要: String queue = channel.queueDeclare("test.queue").getQueue(); Rabbitmq Server 会有以下操作: 定义了一个queue,名称为test.queue 把queue的名称(test.queue)作为routingKey,将当前这个queue binding到一个默认的exchange(名称为空,服务器自动创建的)上如果我们 binding的话 channel.queueBind("test.queue", "test.exchange", "test.ro 阅读全文
posted @ 2011-08-30 21:52 amityat 阅读(961) 评论(0) 推荐(0) 编辑
摘要: What messaging scenarios are supported by AMQP and RabbitMQ? AMQP is a very general system that can be configured to cover a great variety of messaging middleware use-cases. For example: Point-to-point communication One of the simple... 阅读全文
posted @ 2011-08-30 21:51 amityat 阅读(757) 评论(0) 推荐(0) 编辑