RMQ Topic
原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11794927.html
RMQ Topic
Project Directory
Maven Dependency
- <?xml version="1.0" encoding="UTF-8"?>
- <project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>org.fool.rmq</groupId>
- <artifactId>rmq</artifactId>
- <version>1.0-SNAPSHOT</version>
- <parent>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-parent</artifactId>
- <version>2.2.0.RELEASE</version>
- </parent>
- <dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-amqp</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
- <build>
- <plugins>
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
- </project>
application.properties
- spring.application.name=rmq
- server.port=
- spring.rabbitmq.host=localhost
- spring.rabbitmq.port=
- spring.rabbitmq.username=admin
- spring.rabbitmq.password=admin
- #direct part start
- rmq.config.exchange=log.direct
- rmq.config.queue.info=log.info
- rmq.config.queue.info.routing.key=log.info.routing.key
- rmq.config.queue.error=log.error
- rmq.config.queue.error.routing.key=log.error.routing.key
- #direct part end
- #topic part start
- rmq.config.exchange.topic=log.topic
- rmq.config.queue.topic.info=log.topic.info
- rmq.config.queue.topic.error=log.topic.error
- rmq.config.queue.topic.all=log.topic.all
- rmq.config.queue.user.info.routing.key=user.log.info
- rmq.config.queue.user.debug.routing.key=user.log.debug
- rmq.config.queue.user.warn.routing.key=user.log.warn
- rmq.config.queue.user.error.routing.key=user.log.error
- rmq.config.queue.product.info.routing.key=product.log.info
- rmq.config.queue.product.debug.routing.key=product.log.debug
- rmq.config.queue.product.warn.routing.key=product.log.warn
- rmq.config.queue.product.error.routing.key=product.log.error
- rmq.config.queue.order.info.routing.key=order.log.info
- rmq.config.queue.order.debug.routing.key=order.log.debug
- rmq.config.queue.order.warn.routing.key=order.log.warn
- rmq.config.queue.order.error.routing.key=order.log.error
- #topic part end
Source Code
Application.java
- package org.fool.rmq;
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.SpringBootApplication;
- @SpringBootApplication
- public class Application {
- public static void main(String[] args) {
- SpringApplication.run(Application.class, args);
- }
- }
RmqConfig.java
- package org.fool.rmq.config;
- import org.springframework.amqp.core.Queue;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- @Configuration
- public class RmqConfig {
- @Bean
- public Queue queue() {
- return new Queue("hello-rmq");
- }
- }
UserProducer.java
- package org.fool.rmq.topic;
- import org.springframework.amqp.core.AmqpTemplate;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.stereotype.Component;
- import java.util.Date;
- @Component
- public class UserProducer {
- @Autowired
- private AmqpTemplate rmqTemplate;
- @Value("${rmq.config.exchange.topic}")
- private String exchange;
- @Value("${rmq.config.queue.user.info.routing.key}")
- private String infoRoutingKey;
- @Value("${rmq.config.queue.user.debug.routing.key}")
- private String debugRoutingKey;
- @Value("${rmq.config.queue.user.warn.routing.key}")
- private String warnRoutingKey;
- @Value("${rmq.config.queue.user.error.routing.key}")
- private String errorRoutingKey;
- public void send() {
- String message = "Hello User";
- rmqTemplate.convertAndSend(exchange, infoRoutingKey, message + " info");
- rmqTemplate.convertAndSend(exchange, debugRoutingKey, message + " debug");
- rmqTemplate.convertAndSend(exchange, warnRoutingKey, message+ " warn");
- rmqTemplate.convertAndSend(exchange, errorRoutingKey, message + " error");
- }
- }
ProductProducer.java
- package org.fool.rmq.topic;
- import org.springframework.amqp.core.AmqpTemplate;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.stereotype.Component;
- import java.util.Date;
- @Component
- public class ProductProducer {
- @Autowired
- private AmqpTemplate rmqTemplate;
- @Value("${rmq.config.exchange.topic}")
- private String exchange;
- @Value("${rmq.config.queue.product.info.routing.key}")
- private String infoRoutingKey;
- @Value("${rmq.config.queue.product.debug.routing.key}")
- private String debugRoutingKey;
- @Value("${rmq.config.queue.product.warn.routing.key}")
- private String warnRoutingKey;
- @Value("${rmq.config.queue.product.error.routing.key}")
- private String errorRoutingKey;
- public void send() {
- String message = "Hello Product";
- rmqTemplate.convertAndSend(exchange, infoRoutingKey, message + " info");
- rmqTemplate.convertAndSend(exchange, debugRoutingKey, message + " debug");
- rmqTemplate.convertAndSend(exchange, warnRoutingKey, message + " warn");
- rmqTemplate.convertAndSend(exchange, errorRoutingKey, message + " error");
- }
- }
OrderProducer.java
- package org.fool.rmq.topic;
- import org.springframework.amqp.core.AmqpTemplate;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.stereotype.Component;
- import java.util.Date;
- @Component
- public class OrderProducer {
- @Autowired
- private AmqpTemplate rmqTemplate;
- @Value("${rmq.config.exchange.topic}")
- private String exchange;
- @Value("${rmq.config.queue.order.info.routing.key}")
- private String infoRoutingKey;
- @Value("${rmq.config.queue.order.debug.routing.key}")
- private String debugRoutingKey;
- @Value("${rmq.config.queue.order.warn.routing.key}")
- private String warnRoutingKey;
- @Value("${rmq.config.queue.order.error.routing.key}")
- private String errorRoutingKey;
- public void send() {
- String message = "Hello Order";
- rmqTemplate.convertAndSend(exchange, infoRoutingKey, message + " info");
- rmqTemplate.convertAndSend(exchange, debugRoutingKey, message + " debug");
- rmqTemplate.convertAndSend(exchange, warnRoutingKey, message + " warn");
- rmqTemplate.convertAndSend(exchange, errorRoutingKey, message + " error");
- }
- }
TopicLogInfoConsumer.java
- package org.fool.rmq.topic;
- import org.springframework.amqp.core.ExchangeTypes;
- import org.springframework.amqp.rabbit.annotation.Exchange;
- import org.springframework.amqp.rabbit.annotation.Queue;
- import org.springframework.amqp.rabbit.annotation.QueueBinding;
- import org.springframework.amqp.rabbit.annotation.RabbitHandler;
- import org.springframework.amqp.rabbit.annotation.RabbitListener;
- import org.springframework.stereotype.Component;
- @Component
- @RabbitListener(bindings = @QueueBinding(
- value = @Queue(value = "${rmq.config.queue.topic.info}", autoDelete = "true"),
- exchange = @Exchange(value = "${rmq.config.exchange.topic}", type = ExchangeTypes.TOPIC),
- key = "*.log.info"
- ))
- public class TopicLogInfoConsumer {
- @RabbitHandler
- public void handle(String message) {
- System.out.println("consume info: " + message);
- }
- }
TopicLogErrorConsumer.java
- package org.fool.rmq.topic;
- import org.springframework.amqp.core.ExchangeTypes;
- import org.springframework.amqp.rabbit.annotation.Exchange;
- import org.springframework.amqp.rabbit.annotation.Queue;
- import org.springframework.amqp.rabbit.annotation.QueueBinding;
- import org.springframework.amqp.rabbit.annotation.RabbitHandler;
- import org.springframework.amqp.rabbit.annotation.RabbitListener;
- import org.springframework.stereotype.Component;
- @Component
- @RabbitListener(bindings = @QueueBinding(
- value = @Queue(value = "${rmq.config.queue.topic.error}", autoDelete = "true"),
- exchange = @Exchange(value = "${rmq.config.exchange.topic}", type = ExchangeTypes.TOPIC),
- key = "*.log.error"
- ))
- public class TopicLogErrorConsumer {
- @RabbitHandler
- public void handle(String message) {
- System.out.println("consume error: " + message);
- }
- }
TopicLogAllConsumer.java
- package org.fool.rmq.topic;
- import org.springframework.amqp.core.ExchangeTypes;
- import org.springframework.amqp.rabbit.annotation.Exchange;
- import org.springframework.amqp.rabbit.annotation.Queue;
- import org.springframework.amqp.rabbit.annotation.QueueBinding;
- import org.springframework.amqp.rabbit.annotation.RabbitHandler;
- import org.springframework.amqp.rabbit.annotation.RabbitListener;
- import org.springframework.stereotype.Component;
- @Component
- @RabbitListener(bindings = @QueueBinding(
- value = @Queue(value = "${rmq.config.queue.topic.all}", autoDelete = "true"),
- exchange = @Exchange(value = "${rmq.config.exchange.topic}", type = ExchangeTypes.TOPIC),
- key = "*.log.*"
- ))
- public class TopicLogAllConsumer {
- @RabbitHandler
- public void handle(String message) {
- System.out.println("consume all: " + message);
- }
- }
ApplicationTest.java
- package org.fool.rmq.test;
- import org.fool.rmq.Application;
- import org.fool.rmq.direct.LogProducer;
- import org.fool.rmq.producer.Producer;
- import org.fool.rmq.topic.OrderProducer;
- import org.fool.rmq.topic.ProductProducer;
- import org.fool.rmq.topic.UserProducer;
- import org.junit.Test;
- import org.junit.runner.RunWith;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.boot.test.context.SpringBootTest;
- import org.springframework.test.context.junit4.SpringRunner;
- @RunWith(SpringRunner.class)
- @SpringBootTest(classes = Application.class)
- public class ApplicationTest {
- @Autowired
- private Producer producer;
- @Autowired
- private LogProducer logProducer;
- @Autowired
- private UserProducer userProducer;
- @Autowired
- private ProductProducer productProducer;
- @Autowired
- private OrderProducer orderProducer;
- @Test
- public void test() {
- producer.send();
- }
- @Test
- public void testDirect() {
- logProducer.send();
- }
- @Test
- public void testTopic() {
- userProducer.send();
- productProducer.send();
- orderProducer.send();
- }
- }
Console Output
RMQ Management
RMQ Topic的更多相关文章
- RMQ Fanout
原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11795256.html RMQ Fanout Project Directory Maven Depe ...
- vivo 基于原生 RabbitMQ 的高可用架构实践
一.背景说明 vivo 在 2016 年引入 RabbitMQ,基于开源 RabbitMQ 进行扩展,向业务提供消息中间件服务. 2016~2018年,所有业务均使用一个集群,随着业务规模的增长,集群 ...
- RMQ Terminology
原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11784644.html RMQ模型架构 RMQ Terminology Message 消息,消息是不 ...
- Kafka 如何读取offset topic内容 (__consumer_offsets)
众所周知,由于Zookeeper并不适合大批量的频繁写入操作,新版Kafka已推荐将consumer的位移信息保存在Kafka内部的topic中,即__consumer_offsets topic,并 ...
- Kafka如何创建topic?
Kafka创建topic命令很简单,一条命令足矣:bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-facto ...
- Kafka0.8.2.1删除topic逻辑
前提条件: 在启动broker时候开启删除topic的开关,即在server.properties中添加: delete.topic.enable=true 命令: bin/kafka-topics ...
- BZOJ 3489: A simple rmq problem
3489: A simple rmq problem Time Limit: 40 Sec Memory Limit: 600 MBSubmit: 1594 Solved: 520[Submit] ...
- [bigdata] kafka基本命令 -- 迁移topic partition到指定的broker
版本 0.9.2 创建topic bin/kafka-topics.sh --create --topic topic_name --partition 6 --replication-factor ...
- UVA 11235Frequent values(RMQ)
训练指南P198 题意:给出一个非降序排列的整数数组a1, a2…… an,你的任务是对于一系列询问(i,j),回答ai, ai+1 ……aj 中出现的次数最多的次数 这题不仅学到了rmq的应用还学到 ...
随机推荐
- 封装redis(set/get/delete)str和哈希类型
将Redis的常用操作封装了一下: import redis class MyRedis(): def __init__(self,ip,passwd,port=6379,db=0): #构造函数 t ...
- 从DT时代云栖大会聊聊恒生电子
从IT到DT,除了HOMS和配资,本文结合互联网金融的背景,帮助读者对恒生电子600570了解更多. 马云在2015杭州·云栖大会Computing Conference发表致辞时多次强调DT(Dat ...
- 【openstf】自己的云测平台——mac安装openstf
openstf的github地址:https://github.com/openstf/stf 上图可以清晰看出openstf的使用场景和效果 openstf是一个web应用程序,用于远程调试智能 ...
- idea的热部署
1:先找到你要热部署的tomcat之后 ,在设置tomcat时 先选择 server,里面有On 'Update' action () 和 On frame deactivation 这两项 都 ...
- Java课堂笔记(二):面向对象
几乎每一本介绍Java语言的书中都会提到“面向对象”的这个概念,然而博主初学Java时看到这方面的内容一般都是草草地看一看,甚至是直接略过.原因很简单:考试基本不考,而且初学阶段写代码也很少用上.但事 ...
- [BZOJ 3731] Gty的超级妹子树 (树分块)
[BZOJ 3731] Gty的超级妹子树 (树分块) 题面 给出一棵树(或森林),每个点都有一个值.现在有四种操作 1.查询x子树里>y的值有多少个 2.把点x的值改成y 3.添加一个新节点, ...
- [常用类]排序及Arrays类(简单介绍)
冒泡排序bubble sort 轻的上浮,重的下沉.两个相邻位置比较,如果前面元素比后面的元素大就换位置 选择排序 select sort 用一个索引上的元素,依次和其他位置上的元素比较,小的放前面 ...
- ofbiz16.11.04(环境搭建)
ofbiz16.11.04(环境搭建) 版本说明: ofbiz 16.11.04 下载地址:http://ofbiz.apache.org/download.html gradle 4.9 下载地址: ...
- spark复习笔记(2)
之前工作的时候经常用,隔了段时间,现在学校要用学的东西也忘了,翻翻书谢谢博客吧. 1.什么是spark? Spark是一种快速.通用.可扩展的大数据分析引擎,2009年诞生于加州大学伯克利分校AMPL ...
- k3 cloud单据体首行过滤功能
#实现单据体首行过滤 clr.AddReference('System') clr.AddReference('Kingdee.BOS.Core') from Kingdee.BOS.Core.Dy ...