首页 > 开发 > Java > 正文

springboot实现rabbitmq的队列初始化和绑定

2024-07-14 08:42:27
字体:
来源:转载
供稿:网友

配置文件,在rabbit中自动建立exchange,queue和绑定它们的关系

  1. 代码里初始化exchange
  2. 代码里初始化queue
  3. 代码里绑定exchange,queue和routekey
  4. 配置文件,直接声明vhost

代码里初始化exchange

/**  * rabbitMq里初始化exchange.  *  * @return  */ @Bean public TopicExchange crmExchange() {  return new TopicExchange(EXCHANGE); }

代码里初始化queue

/**  * rabbitMq里初始化队列crm.hello.  *  * @return  */ @Bean public Queue helloQueue() {  return new Queue(HELLO); }

代码里绑定exchange,queue和routekey

/**  * 绑定exchange & queue & routekey.  *  * @param queueMessage 队列  * @param exchange   交换机  * @param routekey   路由  * @return  */ public Binding bindingExchange(Queue queueMessage, TopicExchange exchange, String routekey) {  return BindingBuilder.bind(queueMessage).to(exchange).with(routekey); }

配置文件

spring:  rabbitmq:  host: localhost  port: 5672  username: guest  password: guest  virtual-host: lind

完整代码

package com.lind.microservice.productCenter.mq;import org.springframework.amqp.core.Binding;import org.springframework.amqp.core.BindingBuilder;import org.springframework.amqp.core.Queue;import org.springframework.amqp.core.TopicExchange;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;/** * amqp配置. */@Configurationpublic class AmqpConfig { /**  * 交换机.  */ public final static String EXCHANGE = "crm"; /**  * hello队列.  */ public final static String HELLO = "crm.hello"; /**  * 建立订单队列.  */ public final static String LIND_GENERATE_ORDER = "crm.generate.order"; /**  * 绑定exchange & queue & routekey.  *  * @param queueMessage 队列  * @param exchange   交换机  * @param routekey   路由  * @return  */ public Binding bindingExchange(Queue queueMessage, TopicExchange exchange, String routekey) {  return BindingBuilder.bind(queueMessage).to(exchange).with(routekey); } /**  * rabbitMq里初始化exchange.  *  * @return  */ @Bean public TopicExchange crmExchange() {  return new TopicExchange(EXCHANGE); } /**  * rabbitMq里初始化队列crm.hello.  *  * @return  */ @Bean public Queue helloQueue() {  return new Queue(HELLO); } /**  * rabbitMq里初始化队列crm.generate.order.  *  * @return  */ @Bean public Queue orderQueue() {  return new Queue(LIND_GENERATE_ORDER); }}

队列发布者

package com.lind.microservice.productCenter.mq;import java.util.Date;import org.springframework.amqp.core.AmqpTemplate;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Configuration;@Configurationpublic class HelloPublisher { @Autowired AmqpTemplate rabbitTemplate; @Autowired AmqpConfig amqpConfig; public void hello() {  String context = "hello " + new Date();  System.out.println("HelloPublisher : " + context);  amqpConfig.bindingExchange(    amqpConfig.helloQueue(),    amqpConfig.crmExchange(),    "crm.hello.#"  );  this.rabbitTemplate.convertAndSend(AmqpConfig.EXCHANGE, AmqpConfig.HELLO, context); }}

队列订阅者

package com.lind.microservice.productCenter.mq;import org.springframework.amqp.rabbit.annotation.RabbitHandler;import org.springframework.amqp.rabbit.annotation.RabbitListener;import org.springframework.stereotype.Component;@Component@RabbitListener(queues = AmqpConfig.HELLO)public class HelloSubscriber { @RabbitHandler public void process(String hello) {  System.out.println("HelloSubscriber : " + hello); }}

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对VeVb武林网的支持。


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表