欢迎来到天天文库
浏览记录
ID:10547702
大小:32.80 KB
页数:5页
时间:2018-07-07
《rabbit mq 异步消息的使用 转载》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、RabbitMq异步消息的使用转载源地址:最近在研究异步的消息机制,使用的是rabbitmq这个消息框架,使用Erlang开发,提供了java的jar包。AMQP里主要要说两个组件:Exchange和Queue(在AMQP1.0里还会有变动),这两者都在Server端,又称作Broker,这部分是RabbitMQ实现的。客户端,通常有Producer和Consumer两种类型。通常的操作流程是:(1)消费者:创建信息通道。(2)消费者:定义消息队列。(3)消费者:定义特定类型的交换机。(4)消费者:设定绑定规则(包括交
2、换机名称、队列名称以及路由键)。(5)消费者:等待消息。(6)生产者:创建消息。(7)生产者:将消息投递给信息通道(注明接收交换机名称和路由键)。(8)交换机:获取消息,依据交换机类型决定是否匹配路由规则(如需匹配,则对比消息路由键和绑定路由键)。(9)消费者:获取并处理消息,发送反馈。(10)结束:关闭通道和连接。队列定义参数:durable:是否持久,如果是true,则在服务重启之后还是存在,否则不存在exclusive:仅创建者可以使用的私有队列,断开后自动删除。(如果为true则只有创建者线程才可以使用,如果线
3、程停止则queue也会自动删除)auto_delete:当所有消费客户端连接断开后,是否自动删除队列。交换机定义参数:type:交换机类型,包括fanout,direct和topic。auto_delete:当所有绑定队列都不再使用时,是否自动删除该交换机。交换机类型:Fanout:不处理路由键,将消息广播给绑定到该交换机的所有队列。不论消息的路由关键字是什么,这条消息都会被路由到所有与该交换器绑定的队列中。广播式交换器类型的工作方式如下:不使用任何参数将消息队列与交换器绑定在一起。发布者(直接式交换器类型描述中的pr
4、oducer变成了publisher,已经隐含了二种交换器类型的区别)向交换器发送一条消息。消息被无条件的传递到所有和这个交换器绑定的消息队列中。Direct:处理路由键,对消息路径进行全文匹配。消息路由键"dog"只能匹配"dog"绑定,不匹配"dog.puppy"这类绑定。通过精确匹配消息的路由关键字,将消息路由到零个或者多个队列中,绑定关键字用来将队列和交换器绑定到一起。这让我们可以构建经典的点对点队列消息传输模型,不过和任何已定义的交换器类型一样,当消息的路由关键字与多个绑定关键字匹配时,消息可能会被发送到多个
5、队列中。Topic:处理路由键,按模式匹配路由键。模式符号"#"表示一个或多个单词,"*"仅匹配一个单词。如"audit.#"可匹配"audit.irs.corporate",但"audit.*"只匹配"audit.irs"。主题式交换器类型提供了这样的路由机制:通过消息的路由关键字和绑定关键字的模式匹配,将消息路由到被绑定的队列中。这种路由器类型可以被用来支持经典的发布/订阅消息传输模型--使用主题名字空间作为消息寻址模式,将消息传递给那些部分或者全部匹配主题模式的多个消费者。主题交换器类型的工作方式如下:绑定关键字
6、用零个或多个标记构成,每一个标记之间用"."字符分隔。绑定关键字必须用这种形式明确说明,并支持通配符:"*"匹配一个词组,"#"零个或多个词组。因此绑定关键字"*.stock.#"匹配路由关键字"usd.stock"和"eur.stock.db",但是不匹配"stock.nasdaq"。这种交换器类型是可选的。生产者无需定义队列、交换机和绑定,只需将消息投递给信息通道即可。如果定义一durable的queue,那么bind此queue的exchange也必须是durable的定义用户权限set_permissions[
7、-pvhostpath][-sscope]{user}{conf}{write}{read}vhostpathThenameofthevirtualhosttowhichtogranttheuseraccess,defaultingto/.scopeScopeofthepermissions:eitherclient(thedefault)orall.Thisdetermineswhetherpermissionsarecheckedforserver-generatedresourcenames(all)oronly
8、forclient-specifiedresourcenames(client).userThenameoftheusertograntaccesstothespecifiedvirtualhost.confAregularexpressionmatchingresourcenamesforwhichtheuserisgrante
此文档下载收益归作者所有