示例说明
将主题交换机应用到我们的日志系统中。在开始工作前,我们假设日志的路由键由两个单词组成,路由键看起来是这样的:service.severity代码跟上一篇教程差不多
假设有 order,user,email 服务,日志级别有error,info,warning。
生产者:服务和日志级别的排列组合作为routing key(如 order.email,order.info,order.warning,user.error,user.info .....),分别发送3条日志。
消费者:定义消费者,A、接收所有error 级别日志( *.error);B、接收 order 服务的日志(order.*),C、接收user服务和info级别的日志(user.* *.info),D、接收所有的日志(#)
请参考 “rabbitmq 主题交换机java 实现”的示例说明( http://blog.csdn.net/convict_eva/article/details/52315474)
项目依赖:
<dependency> <groupId>org.springframework.amqp</groupId> <artifactId>spring-rabbit</artifactId> <version>1.6.1.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.amqp</groupId> <artifactId>spring-amqp</artifactId> <version>1.6.1.RELEASE</version> </dependency> <dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>3.6.1</version> </dependency>目录结构
MsgHandler 消息处理方法实现
Recv 启动消息接收
Send 消息发送
applicationContext-consumer-sync.xml 消息接收者配置
applicationContext-producer-sync.xml 消息发送者配置
rabbitmq.properties rabbitmq 的属性配置
代码说明
配置文件
rabbitmq.host=192.168.174.128 rabbitmq.port=5672 rabbitmq.username=convict_eva rabbitmq.password=convict_eva rabbitmq.virtualHost=/convict_eva #队列名 rabbitmq.queue.a=spring_queue_a rabbitmq.queue.b=spring_queue_b rabbitmq.queue.c=spring_queue_c rabbitmq.queue.d=spring_queue_d #队列对应的routing key rabbitmq.queue.a.routing=*.error rabbitmq.queue.b.routing=order.* rabbitmq.queue.c.routing=user.* rabbitmq.queue.c.routing_2=*.info rabbitmq.queue.d.routing=# #发送消息的路由 rabbitmq.msg.routing=user.error #交换机名称 rabbitmq.exchangeName=topic_exchage
消息发送者
加载配置文件
<bean class