标签:peng 服务 String 队列 Queue MQ msg 数据传输 public
MQ传输的方法有7种,常用的有5种。
简单、工作、广播、路由、通配符。
如果是使用的 Linux 需要启动和安装 MQ 镜像:
导入依赖:
<!--AMQP依赖,包含RabbitMQ--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency>
配置 application.yml 配置:
spring: rabbitmq: host: 192.168.30.134 # 主机名 port: 5672 # 端口 virtual-host: / # 虚拟主机 username: peng # 用户名 password: 123456 # 密码
生产者,也就是消息发送者,消费者也就是消息接收者。
定义消费者,创建 SpringRabbitFanout 类,里面配置交换机和队列:
import org.springframework.amqp.core.Binding; import org.springframework.amqp.core.BindingBuilder; import org.springframework.amqp.core.FanoutExchange; import org.springframework.amqp.core.Queue; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * @ClassName 定义交换机 **/ @Configuration public class SpringRabbitFanout { /** * @Description:交换机 **/ @Bean public FanoutExchange fanoutExchange(){ return new FanoutExchange("peng.fanout"); } /** * @Description:队列1 **/ @Bean public Queue fanoutQueue1(){ return new Queue("fanout.queue1"); } /** * @Description:队列和交换机绑定 **/ @Bean public Binding bindingQueue(Queue fanoutQueue1,FanoutExchange fanoutExchange){ return BindingBuilder.bind(fanoutQueue1).to(fanoutExchange); } /** * @Description:队列2 **/ @Bean public Queue fanoutQueue2(){ return new Queue("fanout.queue2"); } /** * @Description:队列和交换机绑定 **/ @Bean public Binding bindingQueue2(Queue fanoutQueue2,FanoutExchange fanoutExchange){ return BindingBuilder.bind(fanoutQueue2).to(fanoutExchange); } }
定义 SpringFanout 类接收数据,这里我定义了 3种:广播 、路由也叫定向、通配符
/** * @ClassName 广播方式接收数据 **/ @Component public class SpringFanout { //广播========================== @RabbitListener(queues = "fanout.queue1") public void listFanoutQueue1(String msg){ System.out.println("1--广播队列接收到:"+msg); } @RabbitListener(queues = "fanout.queue2") public void listFanoutQueue2(String msg){ System.out.println("2--广播队列接收到:"+msg); } //定向===================== @RabbitListener(bindings = @QueueBinding( value = @Queue(name = "direct.queue1"), exchange =@Exchange(name = "peng.direct",type = ExchangeTypes.DIRECT), key = {"bey","bylist"} )) public void listDirectQueue1(String msg){ System.out.println("1--定向队列接收到:"+msg); } @RabbitListener(bindings = @QueueBinding( value = @Queue(name = "direct.queue2"), exchange = @Exchange(name ="peng.direct",type = ExchangeTypes.DIRECT), key = {"bey"} )) public void listDirectQueue2(String msg){ System.out.println("2--定向队列接收到:"+msg); } //通配符========================== @RabbitListener(bindings = @QueueBinding( value = @Queue(name = "topic.queue1"), exchange =@Exchange(name = "peng.topic",type = ExchangeTypes.TOPIC), key = {"bey.#","#.bylist"} )) public void listTopicQueue1(String msg){ System.out.println("1--通配符队列接收到:"+msg); } @RabbitListener(bindings = @QueueBinding( value = @Queue(name = "topic.queue2"), exchange = @Exchange(name ="peng.topic",type = ExchangeTypes.TOPIC), key = {"#.bey"} )) public void listTopicQueue2(String msg){ System.out.println("2--通配符队列接收到:"+msg); } }
定义测试类发送数据:
@RunWith(SpringRunner.class) @SpringBootTest public class SpringAmqpTest { @Autowired private RabbitTemplate rabbitTemplate; @Test public void testSimpleQueue() { //定义队列 String dui="peng.queue"; //数据 String shu="java,heoll~"; //发送信息 rabbitTemplate.convertAndSend(dui,shu); } @Test public void testFanoutQueue() { //定义队列 String dui="peng.fanout1"; //数据 String shu="java,heoll~"; //发送信息 rabbitTemplate.convertAndSend(dui,"bylist",shu); } @Test public void testTopicQueue() { //定义队列 String dui="peng.topic"; //数据 String shu="java,heoll~"; //发送信息 rabbitTemplate.convertAndSend(dui,"bey.bylist",shu); } }
标签:peng,服务,String,队列,Queue,MQ,msg,数据传输,public 来源: https://www.cnblogs.com/pengyuangan/p/16359964.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。