消息协议之AMQP简介

非底层操作系统软件、非业务应用软件、不是直接给最终用户使用的,不能直接给客户带来价值的软件统称为中间件。消息中间件关注于数据的发送和接收,利用高效、可靠的异步消息传递机制集成分布式系统。消息队列可用于解决解耦、流量消峰、日志收集、事务最终一致性等问题。

消息协议有AMQP、MQTT、STOMP、XMPP等。其中AMQP协议包含以下信息。

AMQP协议

Exchange(交换器):用来接收消息生产者所发送的消息并将这些消息路由给服务器中的队列

Message(消息):消息服务所处理数据的原子单元。消息可以携带内容,从格式上看,消息包含一个内容头、一组属性和一个内容体。

Publisher(消息生产者):一个向交换器发布消息的客户端

Virtual Host(虚拟主机):它是消息队列以及相关对象的集合,是共享同一个身份验证和加密环境的独立服务器域。每个虚拟主机本质上是一个mini版的消息服务器,拥有自己的队列、交换器、绑定和权限机制。

Broker(消息代理):表示消息队列服务器实体,接受客户端连接,实现AMQP消息队列和路由功能的过程。

Routing Key(路由规则):虚拟机可用它来确定如何路由到一个特定消息。

Queue(消息队列):用来保存消息直接发送给消费者。

Connection(连接):可以理解为客户端和消息队列服务器之间的一个TCP连接。

Channel(信道):信道是一条独立的双向数据流通道,它是建立在真实的TCP连接内的虚拟连接,AMQP命令都是通过信道发出去的,不管发布消息、订阅队列还是接受消息,它们都通过信道完成。

Consumer(消费者):表示一个消息队列中取得消息的客户端应用程序。

Binding(绑定):用于消息队列和交换器之间的关联。一个绑定就是基于路由键将交换器和消息队列连接起来的路由规则,所以可以将交换器理解成一个由绑定构成的路由表。

Spring AMQP 是基于 Spring 框架的 AMQP 消息解决方案,提供模板化的发送和接收消息的抽象层,提供基于消息驱动的 POJO。同时有 Java 和 .NET 的版本。示例代码:public static void main(final String... args) throws Exception {     ConnectionFactory cf = new CachingConnectionFactory();     // set up the queue, exchange, binding on the broker     RabbitAdmin admin = new RabbitAdmin(cf);     Queue queue = new Queue("myQueue");     admin.declareQueue(queue);     TopicExchange exchange = new TopicExchange("myExchange");     admin.declareExchange(exchange);     admin.declareBinding(         BindingBuilder.bind(queue).to(exchange).with("foo.*"));     // set up the listener and container     SimpleMessageListenerContainer container =             new SimpleMessageListenerContainer(cf);     Object listener = new Object() {         public void handleMessage(String foo) {             System.out.println(foo);         }     };     MessageListenerAdapter adapter = new MessageListenerAdapter(listener);     container.setMessageListener(adapter);     container.setQueueNames("myQueue");     container.start();     // send something     RabbitTemplate template = new RabbitTemplate(cf);     template.convertAndSend("myExchange", "foo.bar", "Hello, world!");     Thread.sleep(1000);     container.stop(); } 标签:Spring
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值